第乙個shell指令碼編寫

2021-09-29 21:17:25 字數 2210 閱讀 1286

開啟shell環境

mac系統下,自帶的終端就是乙個標準的shell環境,筆者這裡沒有使用自帶的終端,而是自己安裝了iterm2,這也是乙個標準的shell環境。

建立shell指令碼的路徑

mkdir -p shell/script
建立shell指令碼1)shell指令碼的格式是.sh的檔案,使用vim編輯器建立指令碼。

vim first_shell.sh
2)編輯shell指令碼內容

#!/bin/bash

#this is a shell script

echo

"hello world!"

指令碼中的第一行#!/bin/bash的作用是提示這一檔案是shell指令碼檔案;

第二行是注釋行,shell指令碼中用#來進行注釋;

接下來就是shell命令列,這是shell指令碼中真正執行的語句;

指令碼編輯完成後,儲存退出。

shell指令碼的執行

執行shell指令碼有以下兩種方法:

1)直接使用命令/bin/bashbash切換到shell執行環境,然後執行.s**件

/bin/bash first_shell.sh
2)給.s**件新增執行許可權

首先使用ls -l檢視檔案許可權

可以看到當前檔案是沒有執行許可權,使用命令chmod來修改檔案的許可權,這裡修改為當前使用者有執行許可權

chmod u+x first_shell.sh
然後,使用以下命令執行

./first_shell.sh
shell指令碼的除錯

#!

/bin/bash

#define funciton

function add (

)add $1 $2

echo "sum is $? "

除錯過程:

1)未輸入引數的情況

2)正確輸入引數的情況

對「-x」選項的增強

觀察上面使用-x選項來對shell指令碼除錯的輸出結果,除錯的輸出資訊是進行變數替換之後的命令列內容以及在行首的』+'號提示符,對於行數比較多的複雜指令碼來說,還是很難在shell指令碼中定位到具體的有問題的行,可以使用shell的內建環境變數來增強「-x」選項的輸出資訊,比如行號、函式名等。

內建環境變數$lineno可以表示shell指令碼的當前行號;

內建環境變數$funcname表示函式的名字,這個變數是乙個陣列變數,包含了整個呼叫鏈上所有的函式名,$表示當前正在執行的函式的名稱,$表示呼叫函式$的函式名稱,以此類推。。

在shell ps變數中也介紹過,ps4變數是跟蹤執行輸出的字首,預設為『+』,而bash -x 除錯資訊中的「+」號正是$ps4的值,因此可以通過重定義ps4的值來增強-x選項的輸出。

可以在執行除錯命令前,先執行export ps4=』+}』,臨時將ps4變數設定成+:的形式,也可以將ps4的設定資訊寫入.bash_profile檔案中,執行source .bash_profile讓其生效,使ps4的設定永久生效,新的除錯資訊如下:

輸入引數的情況:

當然,也可以使用其他的內建環境變數來重定義ps4變數,目的是提高除錯資訊的可讀性。

編寫第乙個Shell指令碼

linux中有好多中不同的shell,bash是linux預設的shell,免費且容易使用。su切換為root許可權 1.建立shell指令碼 touch hello.sh vi hello.sh內容 bin bash the first program echo hello world 3.儲存並...

編寫第乙個shell指令碼

1 新建目錄 mkdir test 2 進入目錄中,新建檔案 cd test touch test.sh 3 編寫內容 vi test.sh bin bash echo hello world 4 可執行許可權 chmod 755 test.sh對於指令碼檔案,有兩個常見的許可權設定 許可權為755...

第乙個Shell指令碼

開啟文字編輯器,新建乙個檔案,擴充套件名為sh sh代表shell 副檔名並不影響指令碼執行,見名知意就好,如果你用php寫shell 指令碼,副檔名就用php好了。輸入一些 bin bash echo hello world 是乙個約定的標記,它告訴系統這個指令碼需要什麼直譯器來執行,即使用哪一種...