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

时间:2018-06-05 05:15:45

标签: bash

你好,这是我的主要脚本。 test2.sh只是一个回声"它起作用了#34;

当我尝试从原始循环调用时会发生什么,它会到达正确的文件,然后回显无限的"它起作用"应该只做一次。

知道为什么吗?我真的想要在主脚本之外调用另一个不会干扰的循环,但仍然在学习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

1 个答案:

答案 0 :(得分:1)

第一次观察&不是逻辑运算符,&在后​​台运行precedding命令。使用&&进行逻辑操作。

您需要的是break关键字而不是continue关键字。如果使用break关键字,循环将停止执行。 continue关键字只会重新执行循环,并且由于number为4,因此这段代码将始终运行elif [ "$number" -eq "4" ]; 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 && break
fi
sleep 5


((number++))
echo $number
done

或者你可以这样做

for number in {1..4};do
   (( number == 4 )) && ./test2.sh || echo "$number"
   sleep 5
done