
哈哈,这简单!造成这个问题的原因是while循环位于管道中,这意味着在运行过程中,while循环实际是位于一个新的SHELL中的,while循环中的变量和文件开头定义的变量是两个不同的变量,所以while循环中所改变的值在while循环结束后无法保存下来。解决这个问题的方法就是不要使用管道。
#!/bin/sh
num=1
while [ $num -le 10 ]
do
SUM =' expr $num \ $num ' #SUM等号之间不能有空格 ,等号后面语句单引号换成反引号
echo $SUM
num =" expr $num +1 " #这一行双引号换反引号 ,1与+号之间有空格。
done
shell的语法检查是比较严格的,尤其是空格以后多注意
其实呢,我想告诉你values=$(echo
$(date
+%y%m%d)|sed
-r
's/^({4})({2})({2})$/\1-\2-\3/g')这句话是赋值语句,只要value是可读写的,那么就是一直为true真正的判断条件这样写[
$values
=
$(echo
$(date
+%y%m%d)|sed
-r
's/^({4})({2})({2})$/\1-\2-\3/g')
]注意空格。嘻嘻
这个地方的问题,对于一个初学者来说是怎么想也想不到的问题就是:
while [ $1 -ge 10 ]
在while与[]之间你没有加空格
还有一点,如果你给出的参数值大于10的话,那么这个程序将会是一个死循环!!
-le 和 -ge 要分清楚
你再检查一下别的地方,我这边运行你的脚本,一切正常啊。
你要怎样的死循环啊?
这个脚本只有输入错误才会一直一直让你输入,当你输入了
y, yes, n, no,函数就return了呀
y | yes ) return 0;;n | no ) return 1;;
) echo "Answer yes or no"
看到没,这里有return的。
以上就是关于linux中while循环中的重定向问题全部的内容,包括:linux中while循环中的重定向问题、求解答关于linux中shell的while脚本用法、linux 长时间while运行,被中止或暂停等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)