當前位置:首頁 » 編程軟體 » linux函數腳本

linux函數腳本

發布時間: 2025-01-11 08:52:49

『壹』 linux system 函數

最近工作中在 Linux 下,某些指定的程序需要調用指定的 shell 腳本完成指定工作,以前也曾經做過類似的功能,調用 system 函數執行指定的腳本,以前並不關心 shell 腳本是否執行成功了,現在的功能需要根據 shell 腳本執行成功與否,於是查詢了下 system 函數的說明,有此文以做筆記之用。

功能:調用/bin/sh -c 執行指定的腳本 command

常規使用方法:

關於返回值:

答案是 都錯

man手冊

看著挺暈的,但是如果對於 system 的執行過程了解的話,就很容易理解了,函數執行分為以下幾個階段。
階段1:創建子進程等准備工作。如果失敗,返回-1
階段2:調用 /bin/sh 拉起腳本,如果拉起失敗或者shell未正常執行,原因值被寫入ret中
階段3:如果 shell 腳本執行成功, shell 腳本的返回值寫入ret中

從上面可知,不管 shell 腳本返回什麼值,只要調用了/bin/sh,並且執行過程沒有被信號中斷,都算正常結束。因為腳本是在子進程中執行的,所以要想獲取腳本是否執行成功的方法只能用系統提供的兩個宏。

由於我們一般在 shell 中會通過返回值判斷腳本是否執行成功,成功返回0,成功返回整數。所以判斷一個腳本是否執行成功,應該滿足三個條件:

注意:當 shell 腳本不存在時、沒有執行條件等,前兩個條件也會成立,此時WEXITSTATUS(ret)為127,所以shell腳本中不能將127作為返回值,shell腳本中的異常返回值最好從1開始遞增,成功返回0。

system 用起來,看則簡單,實則不那麼簡單,有很多隱藏的坑,需要自己深入理解原理,才能更好地使用,也可以用其他實現方式完成相同的功能。
最後對自己說,多寫,多思,多總結

『貳』 LINUX:編寫一個shell腳本,並利用函數實現數列求和運算

#!/bin/bash
sum=0
if[$#-ne2]
then
echo"Pleaseinputtwonumbers!"
elif[$1-gt$2]
then
echo"."
else
foriin$(seq$1$2)
do
sum=`expr$sum+$i`
done
echo""$1~$2"sumis$sum"
fi
#執行結果
#[root@localhostopt]#./b.sh36
#"3~6"sumis18
#[root@localhostopt]#./b.sh3
#Pleaseinputtwonumbers!
#[root@localhostopt]#./b.sh356
#Pleaseinputtwonumbers!
#[root@localhostopt]#./b.sh32
#.
#[root@localhostopt]#./b.sh325
#"3~25"sumis322

『叄』 在linux中怎麼運行腳本函數

1、同一腳本文件中的函數:
#!/bin/sh
function func1()
{
echo $1
}
func1 "Hello world!"

2、其它腳本文件中的函數:
func.sh文件內容如下(其中定義了函數func1,需要1個參數):
#!/bin/sh
function func1()
{
echo $1
}
主程序腳本:
#!/bin/sh
. func.sh
func1 "Hello world!"

熱點內容
雲伺服器容災 發布:2025-01-11 11:51:40 瀏覽:681
phparraysplice 發布:2025-01-11 11:51:40 瀏覽:319
android學習源碼 發布:2025-01-11 11:26:23 瀏覽:412
伺服器都壞了如何恢復 發布:2025-01-11 11:24:04 瀏覽:353
微博緩存的圖片能清理嗎 發布:2025-01-11 11:01:49 瀏覽:307
文字加密器 發布:2025-01-11 11:01:08 瀏覽:453
vc60非靜態編譯 發布:2025-01-11 10:51:32 瀏覽:615
電腦上怎麼解壓縮文件 發布:2025-01-11 10:51:31 瀏覽:784
槍戰王者如何用賬號密碼登錄 發布:2025-01-11 10:30:56 瀏覽:938
mysql在linux下安裝 發布:2025-01-11 10:30:49 瀏覽:845