shell調用shell腳本參數
① 如何給shell腳本傳參數
方法/步驟
執行「nano test.sh」創建一個新的shell腳本。
腳本test.sh的內容如下:
#!/bin/sh
name=$1
echo "the ${name} are great man!"
給新創建的test.sh的腳本賦可執行許可權,命令為「chmod 755 test.sh」。
執行'./test.sh "xiao wang"'命令,可以看到自己編寫腳本的結果「the xiao wang are great man!」。
"name=$1"中$1為系統提供的位置參數,$0代表程序的名稱,[$1/$2/...]從1開始為傳遞的參數。
linux系統除了提供位置參數還提供內置參數,內置參數如下:
$# ----傳遞給程序的總的參數數目
$? ----上一個代碼或者shell程序在shell中退出的情況,如果正常退出則返回0,反之為非0值。
$* ----傳遞給程序的所有參數組成的字元串。
$n ----表示第幾個參數,$1 表示第一個參數,$2 表示第二個參數 ... $0 ----當前程序的名稱
$@----以"參數1" "參數2" ... 形式保存所有參數
$$ ----本程序的(進程ID號)PID
$! ----上一個命令的PID
② 往shell腳本中傳入參數
參數如下:
$# ----傳遞給程序的總的參數數目
$? ----上一個代碼或者shell程序在shell中退出的情況,如果正常退出則返回0,反之為非0值。
$* ----傳遞給程序的所有參數組成的字元串。
$n ----表示第幾個參數,$1 表示第一個參數,$2 表示第二個參數 ... $0 ----當前程序的名稱
$@----以"參數1" "參數2" ... 形式保存所有參數
$$ ----本程序的(進程ID號)PID
$! ----上一個命令的PID
③ shell腳本怎麼調用其他shell腳本
在Shell中要如何調用別的shell腳本,或別的腳本中的變數,函數呢?
方法一: . ./subscript.sh
方法二: source ./subscript.sh
注意:
1.兩個點之間,有空格,千萬注意.
2.兩個腳本不在同一目錄,要用絕對路徑
3.為簡單起見,通常用第一種方法
例如:
復制代碼代碼如下:
main.sh #主腳本
subscripts.sh #子腳本,或者說被調腳本
[code]
[code]
###subscripts.sh 腳本內容如下:###
#!/bin/bash
string="Hello,World! \n"
復制代碼代碼如下:
###main.sh 腳本內容如下###
#!/bin/bash
. ./subscripts.sh
echo -e ${string}
exit 0
輸出結果:
復制代碼代碼如下:
# chmod +x ./main.sh
# ./main.sh
Hello,World!
#
④ linux shell腳本執行命令詳解
在Linux下,如果你需要執行shell腳本,那麼應該使用那個命令呢?下面由我為大家整理了linux shell腳本執行命令的相關知識,希望對大家有幫助!
linux shell腳本執行
linux shell腳本執行方法一: 切換到shell腳本所在的目錄(此時,稱為工作目錄)執行shell腳本:
cd /data/shell
./hello.sh
./的意思是說在當前的工作目錄下執行hello.sh。如果不加上./,bash可能會響應找到不到hello.sh的錯誤信息。因為目前的工作目錄(/data/shell)可能不在執行程序默認的搜索路徑之列,也就是說,不在環境變數PASH的內容之中。查看PATH的內容可用 echo $PASH 命令。現在的/data/shell就不在環境變數PASH中的,所以必須加上./才可執行。
linux shell腳本執行方法二: 以絕對路徑的方式去執行bash shell腳本:
/data/shell/hello.sh
linux shell腳本執行方法三: 直接使用bash 或sh 來執行bash shell腳本:
cd /data/shell
bash hello.sh
或
cd /data/shell
sh hello.sh
注意,若是以方法三的方式來執行,那麼,可以不必事先設定shell的執行許可權,甚至都不用寫shell文件中的第一行(指定bash路徑)。因為方法三是將hello.sh作為參數傳給sh(bash)命令來執行的。這時不是hello.sh自己來執行,而是被人家調用執行,所以不要執行許可權。那麼不用指定bash路徑自然也好理解了啊。
linux shell腳本執行方法四: 在當前的shell環境中執行bash shell腳本:
cd /data/shell
. hello.sh
或
cd /data/shell
source hello.sh
前三種方法執行shell腳本時都是在當前shell(稱為父shell)開啟一個子shell環境,此shell腳本就在這個子shell環境中執行。shell腳本執行完後子shell環境隨即關閉,然後又回到父shell中。而方法四則是在當前shell中執行的。
⑤ shell腳本如何傳遞給子腳本命令行參數
shell腳本如何傳遞給子腳本命令行參數
shell腳本可以使用getops來分析命令行參數,現在的一個使用場景是:
例如:
父腳本:
父腳本處理一個參數-t,如果-t的值是sub,那麼調用sub.sh子腳本,然後把剩下的參數連同重寫的-t參數傳遞給子腳本sub.sh。
子腳本:
子腳本的參數處理就沒啥特殊的 了,和普通的腳本處理命令行參數一樣。
運行例子:
限制:
⑥ shell腳本怎麼調用另外腳本中的參數
另外的腳本中輸出用echo,腳本調用a=`bash scriptA.sh`
