加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

shell 之顺序调用多个脚本上技巧及可能的问题

发布时间:2020-12-15 19:40:31 所属栏目:安全 来源:网络整理
导读:当前环境如下,脚本内容如下: shell:root@OpenWrt:/bin# ls -al cha*-rwxrwxr-x 1 root root 478 Feb 3 20:29 change_list.shchangelist:drwxrwxr-x 1 root root 0 Feb 3 20:49 .drwxr-xr-x 1 root root 0 Feb 3 19:44 ..-rwxr--r-- 1 root root 67 Feb 3 2
当前环境如下,脚本内容如下:
shell:

root@OpenWrt:/bin# ls -al cha*
-rwxrwxr-x    1 root     root           478 Feb  3 20:29 change_list.sh


changelist:
drwxrwxr-x    1 root     root             0 Feb  3 20:49 .
drwxr-xr-x    1 root     root             0 Feb  3 19:44 ..
-rwxr--r--    1 root     root            67 Feb  3 20:26 test.sh
-rwxr--r--    1 root     root            71 Feb  3 20:26 test_1.sh
-rwxr--r--    1 root     root            59 Feb  3 20:26 test_2.sh
root@OpenWrt:/bin# 

change_list.sh

#!/bin/sh

change_dir=changelist
change_path=/bin/$change_dir
for i in `ls $change_path`
do
        echo applying : $i  file
    $change_path/$i &
    wait
        if [[ $? = 0 ]]; then
                echo ok.
        else
                echo failed.
        fi
done

test.sh

#!/bin/sh
echo "this is testing 2222222222111"
sleep 5
exit 0

test_1.sh

#!/bin/sh
echo "this is testing 22222222222222222"
sleep 1
exit 0

test_2.sh

#!/bin/sh
echo "this is testing 33333333333333"
exit 0

在上面的change_list.sh中用的 将当前脚本放到后面然后等待后台进程去完成退出再去执行下一个,以此来实现脚本的顺序执行。

还有一种方法是将以下语句改为

    $change_path/$i &
    wait

改为:

    . $change_path/$i

Note:

两种强制顺序执行,哪一种更好呢,经过测试第一种是比较好的,不过根据环境选择合适的才是最好的。原因是第一个是多线程执行,当执行的脚本发生错误及异常退出时,后面的脚本还可以继续执行。而第二种的方法,是单线程的,只要当前执行的脚本发生错误及异常退出,相当于所有退出,后续脚本无法执行。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读