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, elifbilinen konumları denemek için birden fazla (yukarıya bakın) deneyebilir veya yalnızca PATHkomutu 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 ~/binkomutlarında olabilecek veya olmayabilecek bir şey almak istemezdim Tahmin etmiştim.