Shell脚本 - 变量中的空格?

时间:2014-02-08 00:29:15

标签: bash shell scripting whitespace

以下是我的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”) ...等),所以它无法正常工作。

如何解决此问题并能够让后续行处理整个字符串?

1 个答案:

答案 0 :(得分:2)

您在:

中使用了数组作业
date1=(`date -d @$startdate`)

要么使用简单的反引号(绝对不是首选的技术):

date1=`date -d @$startdate`

或(更好)使用$(...)

date1=$(date -d @$startdate)

或者,在紧要关头(必须有充分的理由),使用它将整个数组复制到touch的参数中:

touch --date="${date1[*]}" /tmp/newerthan

您可能还需要考虑@$startdate周围的双引号。