我是bash的新手,尝试一个简单的循环,但变量的值在它失去后我无法理解为什么 - 我看过几个类似的问题,但他们都与while循环的子shell执行有关。我没有做,但仍然面临问题 - 有人可以解释我的错误在哪里?bash /变量值在循环后为空
#!/bin/bash
check_ss()
{
command_list | awk '{print $1 $9}' > ss.out
for i in {1..8}
do grep -Pa "\x3$i" ss.out > ss$i.out
if grep -w "NotStarted" ss$i.out
then
ss$i=0
else
ss$i=1
fi
done
}
check_ss
echo $ss1
echo $ss2
echo $ss3
echo $ss4
我在执行得到这个:
[[email protected] ~]# ./ss.sh
./ss.sh: line 21: ss1=1: command not found
./ss.sh: line 21: ss2=1: command not found
./ss.sh: line 21: ss3=1: command not found
./ss.sh: line 21: ss4=1: command not found
./ss.sh: line 21: ss5=1: command not found
./ss.sh: line 21: ss6=1: command not found
./ss.sh: line 21: ss7=1: command not found
./ss.sh: line 21: ss8=1: command not found
在此先感谢
谢谢,这在某种程度上改变的情况,但脚本仍试图执行SS1 = 1作为命令而不是一assinging值给变量SS1:./ss.sh:线11:SS1 = 0:找不到命令 ./ss.sh:第17行:ss1 = 1:找不到命令 –
这些错误消息表明您没有在这些行上使用'declare'。一个简单的任务*必须*有一个文字作为LHS;任何参数扩展都需要'declare'命令。 – chepner
谢谢,我做了与声明 - 现在没有找到的命令不再出现,但当做echo $ ss1,echo $ ss2输出为空,看起来变量值丢失某处 –