如何使用bash调用脚本中的另一个脚本
你好,这是我的主要剧本。test2.sh只是一个回声“它工作了” 当我尝试从原始循环调用时会发生什么,它会到达正确的文件,然后echo的无限“它工作了”,它应该只做一次 知道为什么吗?我真的很想在主脚本之外调用另一个循环,它不会干扰,但仍在学习bash=P如何使用bash调用脚本中的另一个脚本,bash,Bash,你好,这是我的主要剧本。test2.sh只是一个回声“它工作了” 当我尝试从原始循环调用时会发生什么,它会到达正确的文件,然后echo的无限“它工作了”,它应该只做一次 知道为什么吗?我真的很想在主脚本之外调用另一个循环,它不会干扰,但仍在学习bash=P #!/bin/bash number=1 while true do if [ "$number" -eq "1" ]; then echo "hello 1!" elif [ "$number" -eq "2" ]; then
#!/bin/bash
number=1
while true
do
if [ "$number" -eq "1" ]; then
echo "hello 1!"
elif [ "$number" -eq "2" ]; then
echo "hello 2!"
elif [ "$number" -eq "3" ]; then
echo "hello 3!"
elif [ "$number" -eq "4" ]; then
./test2.sh & continue
fi
sleep 5
((number++))
echo $number
done
第一个观察值
&
不是逻辑运算符,&
在后台运行前加命令。使用&&
进行逻辑操作
您需要的是break
关键字,而不是continue
关键字。如果使用break
关键字,循环将停止执行。continue关键字只执行循环,因为number
是4,所以此代码分支将始终运行elif[“$number”-eq“4”];然后
工作代码
#!/bin/bash
number=1
while true
do
if [ "$number" -eq "1" ]; then
echo "hello 1!"
elif [ "$number" -eq "2" ]; then
echo "hello 2!"
elif [ "$number" -eq "3" ]; then
echo "hello 3!"
elif [ "$number" -eq "4" ]; then
./test2.sh && break
fi
sleep 5
((number++))
echo $number
done
或者你可以这样做
for number in {1..4};do
(( number == 4 )) && ./test2.sh || echo "$number"
sleep 5
done
所以我要做的是在后台继续第二个脚本,但是循环仍然在继续。这就是为什么我要尝试&并继续。这可能吗?出于某种原因,它会不断重复第二个sh,而不会继续数到5、6、7等等。@JV您不需要
continue
。如果您使用它(它应该在下一行),那么它将再次直接到达顶部-数字
不会增加。您不需要继续
,也不需要中断
。我真傻!在测试第二个.sh文件之前,我有一个回音,所以我必须在那里继续!现在我明白了,因为我正在调用另一个文件,我不再需要继续!谢谢大家:)