次のコードをご覧ください。tee -a:そのようなファイルまたはディレクトリはありません
#!/bin/sh
LOG_FILE=/home/admin/scriptLogs.log
rm -f ${LOG_FILE}
echo "`date`:: Script Execution Started" | tee -a ${LOG_FILE}
DATABASE ACCESS CODE 2>&1
echo "`date`:: Script Execution Successful " | tee -a {$LOG_FILE}
exit 0
は出力次の生成:
> Tue Feb 7 12:14:49 IST 2017:: Script Execution Started
> tee:{/home/admin/scriptLogs.log}: No such file or directory
> Tue Feb 7 12:14:49 IST 2017:: Script Execution Successfull
しかし、ファイルが指定された場所に存在します。また、最後のecho文を除いてデータが付加されます。なぜそのような振る舞いですか? (ここでそれについて読む:http://www.tldp.org/LDP/abs/html/quotingvar.html)を常に再解釈を避けるために、それらを拡大する前に、変数を引用することを確認します
#!/bin/sh
LOG_FILE=/home/admin/scriptLogs.log
rm -f ${LOG_FILE}
echo "`date`:: Script Execution Started" | tee -a ${LOG_FILE}
DATABASE ACCESS CODE 2>&1
echo "`date`:: Script Execution Successful " | tee -a ${LOG_FILE}
exit 0
だけ(そうするのは間違いではありませんが)私は、中括弧を削除しましたtypo - '{$ LOG_FILE}'から '$ {LOG_FILE} 'に変更してください。 '' ''を使う方がさらに優れています。 – codeforester
ところで、ここの余分なブレースは役に立たないので、この文脈であなたを助けません。 'tee -a" $ LOG_FILE "'のようにパスに埋め込まれた空白がある場合は、二重引用符を使うと便利です。 – cdarke