ユーザーにとって「透過的」であるはずのbashスクリプトを書いています。ユーザーからコマンドを読み取り、それらをインターセプトして、いくつかの基準に応じて、一部のコマンドのみをbashで実行できるようにします。それは(基本的に)次のように機能します:
while true; do
read COMMAND
can_be_done $COMMAND
if [ $? == 0 ]; then
eval $COMMAND
if [ $? != 0 ]; then
echo "Error: command not found"
fi
fi
done
問題は、コマンドが失敗すると、コンソールに印刷されたものも表示されることです。しかし、結果を変数に保持し、失敗しない場合にのみ出力する場合は、次のようになります。
RESULT=$(eval $COMMAND)
次に、別の問題があります。特別なフォーマットが失われます(たとえば、「ls --color」は色を表示しなくなります)
私の質問は、成功した場合はコマンドをSTDOUTに出力し、失敗した場合は/ dev / nullに出力する方法はありますか?