Alternatif lain - pola yang saya lihat di skrip konfigurasi proyek otomatis:
if [ -x /usr/bin/figlet ]
then
FIGLET=/usr/bin/figlet
else
FIGLET=:
fi
$FIGLET "Hello, world!"
Dalam kasus spesifik Anda, Anda bahkan dapat melakukannya,
if [ -x /usr/bin/figlet ]
then
SAY=/usr/bin/figlet
elif [ -x /usr/local/bin/figlet ]
then
SAY=/usr/local/bin/figlet
elif [ -x /usr/bin/banner ]
then
SAY=/usr/bin/banner
else
SAY=/usr/bin/echo
fi
$SAY "Hello, world!"
Jika Anda tidak tahu jalur spesifik, Anda dapat mencoba beberapa elif
(lihat di atas) untuk mencoba lokasi yang diketahui, atau cukup gunakan PATH
untuk selalu menyelesaikan perintah:
if command -v figlet >/dev/null
then
SAY=figlet
elif command -v banner >/dev/null
then
SAY=banner
else
SAY=echo
fi
Secara umum, saat menulis skrip, saya lebih suka hanya memanggil perintah di lokasi tertentu yang ditentukan oleh saya. Saya tidak suka ketidakpastian / risiko apa yang mungkin dimasukkan pengguna akhir ke dalam merekaPATH
, mungkin di mereka sendiri ~/bin
.
Jika, misalnya, saya menulis skrip yang rumit untuk orang lain yang mungkin menghapus file berdasarkan output dari perintah tertentu yang saya panggil, saya tidak ingin secara tidak sengaja mengambil sesuatu di dalamnya ~/bin
yang mungkin atau mungkin bukan perintah Saya mengharapkan.