shell 之順序呼叫多個指令碼上技巧及可能的問題

2021-08-17 09:24:59 字數 1550 閱讀 2959

當前環境如下,指令碼內容如下:
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        $change_path/$i &

wait

if [[ $? = 0 ]]; then

echo ok.

else

echo failed.

fidone

test.sh

#!/bin/sh

echo "this is testing 1111111111111"

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:

兩種強制順序執行,哪一種更好呢,經過測試第一種是比較好的,不過根據環境選擇合適的才是最好的。原因是第乙個是多執行緒執行,當執行的指令碼發生錯誤及異常退出時,後面的指令碼還可以繼續執行。而第二種的方法,是單執行緒的,只要當前執行的指令碼發生錯誤及異常退出,相當於所有退出,後續指令碼無法執行。

c 多執行緒之順序呼叫類成員函式

一 場景 leetcode1114 乙個類中三個函式 public class foo public void two public void three 三個不同的執行緒將會共用乙個 foo 例項。執行緒 a 將會呼叫 one 方法 執行緒 b 將會呼叫 two 方法 執行緒 c 將會呼叫 thr...

python學習之 呼叫shell指令碼

python呼叫shell指令碼,有很多種方法,下面給出了三個python中執行shell命令的方法 第一種方案 os.system os.system返回指令碼的退出狀態碼 現有乙個shell指令碼1.sh bin sh echo hello world 在python中呼叫shell指令碼 修改...

Python 呼叫shell指令碼

python呼叫shell指令碼,有兩種方法 os.system cmd 或os.popen cmd 前者返回值是指令碼的退出狀態碼,後者的返回值是指令碼執行過程中的輸出內容。實際使用時視需求情況而選擇。現假定有乙個shell指令碼test.sh bin bash 1.echo hello worl...