此代码是否有问题
IFS=''
for i in `seq 1 20`; do
sleep 1
echo $((20-$i)) seconds till abort ...
done
variable="dummy"
read -p "Enter to continue" -t 1 -N 1 variable
echo -e "\n"
while [ "$variable" != $'\x0a' ]
do
read -p "Enter to continue" -t 1 -N 1 variable
echo -e "\n"
done
错误是20:表达式中的语法错误(错误标记为“2
”如果我删除了IFS ='',那么倒计时工作正常,但是“输入继续”的部分会失败。
建议放IFS ='',因为我看到这个变量是字边界的分隔符吗?
答案 0 :(得分:2)
通过将IFS设置为空字符串,您只进入循环一次,并且在循环的迭代中,变量i是20行字符串。 $(())
不知道如何处理该字符串,因此它会告诉您语法错误。 (请注意,错误标记长度为19行,但您只关注第一行。)
如果你真的需要为脚本的其他部分操作IFS(你可能不会!),你可以这样做:
unset IFS
for i in $(seq 1 20); do
IFS=''
sleep 1
echo $((20-$i)) seconds till abort ...
done