Ank*_*wal 4 shell bash environment-variables control-flow
我有一个 while 循环,它允许在以一种方式编写时设置变量,但在以另一种方式编写时不允许它。这是为什么?这将 var 打印为 1234 并且不打印 var2
#!/bin/bash
var=1234
while var=9876 var2=765 read line
do
echo $var $var2
echo $line
done <datafile
echo out of loop $var
Run Code Online (Sandbox Code Playgroud)
这将 var 打印为 9876 并打印 var2
#!/bin/bash
var=1234
while
var=9876
var2=765
read line
do
echo $var $var2
echo $line
done <datafile
echo out of loop $var
Run Code Online (Sandbox Code Playgroud)
在你的第二个例子中,通过将 var 和 var2 放在不同的行上,这使得命令与
while var=9876; var2=765; read line
Run Code Online (Sandbox Code Playgroud)
该while命令允许在执行 do--while 循环中的命令之前提供命令列表。 help while显示这个:
while:同时命令;执行命令;done
只要测试成功就执行命令。
只要
`while' COMMANDS 中的最后一个命令的退出状态为零,就展开并执行COMMANDS 。
退出状态:返回最后执行的命令的状态。
另一方面,当变量赋值在命令之前(在这种情况下read),并且该赋值后面只有空格,该变量的作用域仅对命令而言是局部的!(内部)...
请参阅: 在 'while IFS= read..' 中,为什么 IFS 没有效果?
| 归档时间: |
|
| 查看次数: |
540 次 |
| 最近记录: |