2016-10-11 27 views
0

〜/ bin/rclone_sync_ACD.logにあるログファイルのシェルスクリプトでcatを実行する際に問題があります。これは、シェルスクリプトの行です:シェルスクリプトによるcatの許可が拒否されました

RESULT=cat $LOGFILE | tail -1 

しかし、スクリプトを実行しているとき、私は得る:私はcat $LOGFILE | tail -1を入力した場合

./rclone_sync: line 63: /Users/pjburnhill/bin/rclone_sync_ACD.log: Permission denied 

の端末では、それが正しい出力を提供します。

正しい行にアクセスして印刷するためにスクリプトに必要な権限はありますか?

おかげで、 PJ

+1

'RESULT = cat $ LOGFILE | tail -1'は '$ LOGFILE'をコマンドとして実行します(おそらく実行可能ではないため、エラーです)。あなたはおそらく 'RESULT = $(cat $ LOGFILE | tail -1)'や[簡単に](https://en.wikipedia.org/wiki/Cat_(Unix)#Useless_use_of_cat) 'RESULT = $(tail -1 "$ LOGFILE") '。これは本当に基本的なものです:あなたはシェルスクリプトチュートリアルを読んでみたいかもしれません。 – Biffen

+2

[shellcheck](http://shellcheck.net)を試してください。自動的に[あなたの問題]を検出します(https://github.com/koalaman/shellcheck/wiki/SC2037)。 –

答えて

2

バッククォートや$()でコマンドをラップし、変数にコマンドの出力を割り当てること。

RESULT=$(cat $LOGFILE | tail -1) 

あなたのコマンドは、環境変数の割り当てRESULT=catを実施し、その後、その環境でコマンドを実行し$LOGFILE | tail -1$LOGFILEは実行可能ファイルではないので、エラーが発生しました。

関連する問題