以下是我的bash脚本存在的问题:
date1=(`date -d @$startdate`)
date2=(`date -d @$enddate`)
touch --date="$date1" /tmp/newerthan
touch --date="$date2" /tmp/olderthan
由于date -d
命令返回的单词包含空格,touch --date="$var"
命令处理的唯一内容是第一个单词(“Mon”,“Tue”,“Wed”) ...等),所以它无法正常工作。
如何解决此问题并能够让后续行处理整个字符串?
答案 0 :(得分:2)
您在:
中使用了数组作业date1=(`date -d @$startdate`)
要么使用简单的反引号(绝对不是首选的技术):
date1=`date -d @$startdate`
或(更好)使用$(...)
:
date1=$(date -d @$startdate)
或者,在紧要关头(必须有充分的理由),使用它将整个数组复制到touch
的参数中:
touch --date="${date1[*]}" /tmp/newerthan
您可能还需要考虑@$startdate
周围的双引号。