Başka bir alternatif - proje otomatik yapılandırma komut dosyalarında gördüğüm bir desen:
if [ -x /usr/bin/figlet ]
then
FIGLET=/usr/bin/figlet
else
FIGLET=:
fi
$FIGLET "Hello, world!"
Sizin özel durumunuzda bile,
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!"
Belirli bir yolu bilmiyorsanız, elif
bilinen konumları denemek için birden fazla (yukarıya bakın) deneyebilir veya yalnızca PATH
komutu her zaman çözmek için kullanabilirsiniz :
if command -v figlet >/dev/null
then
SAY=figlet
elif command -v banner >/dev/null
then
SAY=banner
else
SAY=echo
fi
Genel olarak, komut dosyaları yazarken, yalnızca benim belirlediğim belirli konumlardaki komutları çağırmayı tercih ederim. Son kullanıcının PATH
, belki de kendi başına neler getirebileceğinin belirsizliğini / riskini sevmiyorum ~/bin
.
Örneğin, aradığım belirli bir komutun çıktısına göre dosyaları kaldırabilecek başkaları için karmaşık bir komut dosyası yazıyordum, yanlışlıkla ~/bin
komutlarında olabilecek veya olmayabilecek bir şey almak istemezdim Tahmin etmiştim.