linux中while循环中的重定向问题

linux中while循环中的重定向问题,第1张

哈哈,这简单!造成这个问题的原因是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运行,被中止或暂停等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9675439.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存