ファイルの変更日を確認するために使用されたスクリプトの構文エラー

ファイルの変更日を確認するために使用されたスクリプトの構文エラー

そのため、実行時にファイルを変更したりメッセージをエコーできるスクリプトをシェルで作成したいと思います。

これが私が書いたものです:

#!/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

おすすめ記事