実際に日付配列を作成し、現在の日付と一致する場合は今日の日付と比較してファイルをtest.sh
実行し、そうでない場合はbashスクリプトでループを終了したいと思います。私はこれが好きです...
#!/bin/bash
cd /home/user1
current_date=$(date +%Y-%m-%d)
array=['2016-03-02','2016-03-010','2016-05-10']
for i in "${array[@]}"
do
if [ $now -eq $i ]; then
echo "executing your bash script file"
./myscript.sh
fi
done
上記のスクリプトを実行すると、次のエラーが発生します。
./sample.sh: line 6: [: 2016-03-02: integer expression expected
ベストアンサー1
この試み:
current_date=$(date +%Y-%m-%d)
array=('2016-03-02' '2016-03-010' '2016-05-10')
for i in "${array[@]}" ; do
if [ "$current_date" == "$i" ]
then echo "executing your bash script file"
#./myscript.sh
fi
done
間違い:
- Bashスクリプトで配列を宣言するときは、角かっこを使用しないでください。この角かっこはコマンドを生成します(「if」-testsを参照)。
- スペースで区切られたbashスクリプトの配列要素(カンマなし)
- 文字列を比較するには、その文字列を含む変数を二重引用符で囲みます。
- ここでは、「-eq」を演算子として使用しないでください(算術演算子なので)。代わりに「==」または「!=」を使用してください(こちらも参照してください。http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-11.html)