echo $Date
为什么和之间存在这种差异echo "$(date +%s_%kh%M_le_%a_%d_%b_%Y)"
?
beginning=$(date +%s)
diff="0"
rest="$1"
tmp="0"
now="0"
Date=`date +%s_%kh%M_le_%a_%d_%b_%Y`
echo -n "$1"
while [ "$diff" -lt "$1" ]
do
let "now=$(date +%s)"
let "diff=now-beginning-1"
let "tmp=$1-diff"
if [ "$tmp" -lt "$rest" ]
then
echo
echo $Date
echo "$(date +%s_%kh%M_le_%a_%d_%b_%Y)"
let "rest=$1-diff"
echo -n ", $rest"
fi
done
echo ""
在输出中:
concatenatorus@gwenn-ha-du ~ $ countdown.sh 5
5
1425230747_18h25_le_dim._01_mars_2015
1425230749_18h25_le_dim._01_mars_2015
, 4
1425230747_18h25_le_dim._01_mars_2015
1425230750_18h25_le_dim._01_mars_2015
, 3
1425230747_18h25_le_dim._01_mars_2015
1425230751_18h25_le_dim._01_mars_2015
, 2
1425230747_18h25_le_dim._01_mars_2015
1425230752_18h25_le_dim._01_mars_2015
, 1
1425230747_18h25_le_dim._01_mars_2015
1425230753_18h25_le_dim._01_mars_2015
, 0
我用 :
echo $BASH
/bin/bash
答案1
区别在于你跑
Date=`date +%s_%kh%M_le_%a_%d_%b_%Y`
在脚本的一开始。将该日期/时间存储在名为 ... 的 shell 变量中Date
,然后执行
echo "$(date +%s_%kh%M_le_%a_%d_%b_%Y)"
在循环中...最后一个命令在每次迭代中查询并打印新的时间值,echo $Date
打印始终相同的值!
答案2
在您的脚本中,您在 Date= 中使用了反引号date +%s_%kh%M_le_%a_%d_%b_%Y
并且在 echo 语句中使用双引号。在您的脚本中它会产生相同的结果。
反引号仅用于计算表达式,双引号用于计算表达式以及显示消息。
对于您的脚本来说,使用双引号还是反引号并不重要。