Aslında son zamanlarda benzer bir sorum vardı (her ne kadar yayınlamamıştım, etrafına dolaştım), ve görebildiğim kadarıyla, komuttan önce set + e kullanmak ve sonradan en zarif şekilde çalışmak gibi görünüyor. İşte bir örnek, komutun cevabını kapmak ve hatanın atmasına izin vermemek.
#!/bin/sh
args=""
for argcol in $*
do
args="${args} ${argcol}"
done
fortunevar=""
fortfail=""
{
set +e
fortunevar=`fortune $args`
fortfail=$?
set -e
} &> /dev/null
if [ $fortfail == 0 ]
then
echo ${fortunevar}
say ${fortunevar}
else
echo misfortune: an illegal option was detected!
echo misfortune: usage: misfortune [-afilosw] [-m pattern][ [#%] file/directory/all]
fi
Bu, “servet” in çıktısını alır, çıkış durumunu kontrol eder ve yankılanır ve söyler. Sanırım istediğin bu mu, yoksa en azından benzer bir şey mi? Neyse, umarım bu yardımcı olur.