利用可能なコマンドがあるかどうかを確認したかったです。そうでない場合は、エラーメッセージを印刷して終了したいと思います。
変数を確認せずにこれを実行したいと思います。なぜなら、変数はスクリプトの小さなポイントであり、複数の行にわたって広がることを望まないからです。
私が使用したい外観は基本的に次のとおりです。
rsync --help >> /dev/null 2>&1 || printf "%s\n" "rsync not found, exiting."; exit 1
残念ながら、exit 1
結果に関係なくrsyncが実行されます。
BashでこのPerlタイプのダイメッセージを使用する方法はありますか?
ベストアンサー1
質問に直接答えるには、次のようにコマンドをグループ化します。
rsync --help >> /dev/null 2>&1 || { printf "%s\n" "rsync not found, exiting."; exit 1; }
あなたがしたいことを別の方法でするように提案として:
#!/usr/bin/env bash
for c in rsync ls doesnotexist othercommand grep
do
if ! type "$c" &> /dev/null
then
printf "$c not found, exiting\n"
exit 1
fi
done
die
シェルでPerlをエミュレートするには:
function die {
printf "%s\n" "$@" >&2
exit 1
}
# ...
if ! type "$c" &> /dev/null
then
die "$c not found, exiting"
fi
# ...