添付されたttyなしで実行すると静かにしたいbashスクリプトがあります(cronなど)。 私は、出力を条件付きで/ dev/nullに1行でリダイレクトする方法を探していました。 これは私が考えていたものの一例であるが、私は、スクリプト残念ながらbashの条件付きリダイレクト
#!/bin/bash
# conditional-redirect.sh
if tty -s; then
REDIRECT=
else
REDIRECT=">& /dev/null"
fi
echo "is this visible?" $REDIRECT
で出力を行う、より多くのコマンドがありますが、これは動作しません:
$ ./conditional-redirect.sh
is this visible?
$ echo "" | ./conditional-redirect.sh
is this visible? >& /dev/null
私はドン何tは何をしたいのリダイレクト-付きまたは変異体-NO-リダイレクトですべてのコマンドが重複している:
if tty -s; then
echo "is this visible?"
else
echo "is this visible?" >& /dev/null
fi
EDIT:
"quiet"モードで何かを出力する方法があれば素晴らしいことでしょう。何かが本当に間違っているときは、私はcronから通知を受けたいかもしれません。これは、その時点から/dev/null
からすべてstdout
とstderr
を指示する
exec &>/dev/null
:
はい、作品を! (あるいはもっと単純な 'exec&>/dev/null') –
..しかし、それは"静かな "モードですべての出力が失われるという欠点があります。私が実際に何かを出力したいと思う状況があるかもしれません。 upodated質問を参照してください。 –
良い点、@ダニエル、私は歯の中で少し長くなっていて、古い習慣は激しく死ぬが、あなたの好みの方法で答えを更新した。 – paxdiablo