そのため、実行時にファイルを変更したりメッセージをエコーできるスクリプトをシェルで作成したいと思います。
これが私が書いたものです:
#!/bin/bash
current=$(date +%s)
last_modified='stat -c "Y" $/home/userr/textfile'
if
[ $((current-last_modified)) -gt 120 ]; then
touch /home/userr/textfile;
else
echo "File was modified less than 2 minutes ago";
fi
ShellCheckではすべてが大丈夫だと言っていますが、実行しようとすると次のように表示されます。
stat -c "Y" $/home/userr/textfile: syntax error: invalid arithmetic operator (error token is ""Y" $/home/userr/textfile")
私はどこに間違っているのを知っていますか?よろしくお願いします!
ベストアンサー1
現在の問題は次のように減らすことができます。
last_modified='stat -c "Y" $/home/userr/textfile'
文字列がstat -C "Y" ...
変数に割り当てられます。おそらくあなたが望むのはコマンドの出力を割り当てることですが、stat -c %Y /home/userr/textfile
次のように書くことができます。
last_modified="$(stat -c %Y /home/userr/textfile)"
エラーが検出されないことを避けるために、高速失敗動作が有効になっている#!/bin/sh -e
すべてのシェルスクリプト(ここではbashは必要ありません:))をお勧めします。-e