シェルスクリプトの問題[閉じる]

シェルスクリプトの問題[閉じる]

ファイルが存在するかどうかをテストするシェルスクリプトを作成します。その場合は、削除されたファイルのタイムスタンプ形式ログをYYYYMMDD-HH:MM:SS日付コマンドとして表示し、ファイルを削除してからatコマンドを使用して、5分後に実行されるように独自のスケジュールを調整します。

if (( test -f /tmp/norun ))
then
    echo " removing /tmp/norun" 'data +%Y%m%d-%T'>>s30928290.log
    #rm /tmp/norun
    #timesh='date --date="1 minute"
    at -f /home/s300928290/s300928290.at now + 5 miniutes
else
    echo "hello world"  'data +%Y%m%d-%T'>>s30928290.log
fi
#echo "none";

このスクリプトを実行できません。理由を知っている人はいますか?

答え1

スクリプトを次のように修正しました。

if [[ -f /tmp/norun ]]; then
    echo "Removing /tmp/norun $(date '+%Y%m%d-%T')" >>s30928290.log
    rm -- /tmp/norun
    timesh=$(date --date='1 minute') # This variable is not being used
    at -f /home/s300928290/s300928290.at now + 5 minutes
else
    echo "Hello, world $(date '+%Y%m%d-%T')" >>s30928290.log
fi

Kusalanandaが指摘したように、(( ... ))ファイルテストには無効なbash算術式なので[[ ... ]]

dataあなたがそれを望んでいると信じるとき、あなたはそれを持っていますdate。これはコマンド置換()にも適用する必要があります$( ... )

また、命令のスペルがminutes間違っています。at

関連情報