Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用bash调用脚本中的另一个脚本_Bash - Fatal编程技术网

如何使用bash调用脚本中的另一个脚本

如何使用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

你好,这是我的主要剧本。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
    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文件之前,我有一个回音,所以我必须在那里继续!现在我明白了,因为我正在调用另一个文件,我不再需要继续!谢谢大家:)