良い一日。終了コードを取得し、それに応じてコンソール出力を実行できるように、関数を介して実行したい一連のコマンドがあります。そうは言っても、ここには2つの問題があります。
1) stderr を /dev/null に送信できないようです。
2) $1 が実行されるまで、最初のエコー行は表示されません。ハード ドライブでファイルを検索するなど、処理に時間がかかるコマンドを実行するまでは、あまり目立ちません。さらに、出力が次のようになるため、これが事実であることは明らかです。
sh-3.2# ./runScript.sh
sh-3.2# com.apple.auditd: Already loaded
sh-3.2# Attempting... Enable Security Auditing ...Success
つまり、"Attempting... $2" の前に stderr が表示されました。
これが私が使用しようとしている機能です:
#!/bin/bash
function saveChange {
echo -ne "Attempting... $2"
exec $1
if [ "$?" -ne 0 ]; then
echo -ne " ...Failure\n\r"
else
echo -ne " ...Success\n\r"
fi
}
saveChange "$(launchctl load -w /System/Library/LaunchDaemons/com.apple.auditd.plist)" "Enable Security Auditing"
ヘルプやアドバイスをいただければ幸いです。