特定のディレクトリにリンクを作成し、失敗するとスクリプトを強制終了する非常に単純なスクリプトがあるとします。
ln -s "/opt/myapp" "${1}/link" || exit 1;
現在、エラーが発生した場合は終了します。リンクの作成時に許可エラーが発生した場合にのみ、終了する代わりに次の行を実行するように変更したい:
echo "The target directory requires root privileges to access."
sudo ln -s "/opt/myapp" "${1}/myapp" || exit 1;
絶対に必要でない限り、ユーザーに root として実行するように促したくありません。
ln
アクセス許可の問題であるか、ディレクトリが存在しないなどのその他のエラーであるかに関係なく、失敗時に終了コード 1 を返すように見えるため、それを使用してどの問題が発生したかを検出できません。
ln
代わりに、文字列「アクセス許可が拒否されました」の出力を介して検索を保存すると、英語以外のオペレーティング システムでは失敗すると想定しています。