例如:
#/bin/bash
a=10
for((i=0;i<10;i++))
do
date -d'+$a second'
b=$(( (RANDOM % 10) +10 ))
a=$((a+b))
echo $a
done
在以上程序中,我想将日期循环打印10次,每次比上次多10-20秒,但是date -d'+$a second'这个用法不对,-d后面必须是数字才有效(例如date -d'+14 second'),不能是变量,怎么办?
第1个回答 2019-09-19
单引号换成双引号,基础问题,改成 date -d"+$a second" 就行了
单引号是原样输出,双引号会解析里面的变量,另外变量最好用{}括起来
单引号是原样输出,双引号会解析里面的变量,另外变量最好用{}括起来
第2个回答 2019-09-18
因为使用管道后,生成了一个子shell,子shell里面的变量和外面的变量不是同一个变量,虽然变量名称是一样的。所以循环结束后,父shell的变量仍然没有变动。本回答被网友采纳
第3个回答 2019-09-19
推荐本书《linux就该这么学》里面详细讲到shell