Shell 程式設計知識點

2021-07-13 11:20:49 字數 2827 閱讀 3600

linux 的選項又分為短格式選項和長格式選項。

command1;command2...

--不管command1命令是否執行成功,command2命令都執行。

command1&command2...

--command1命令和command2命令同時執行

command1&&command2...

--只在command1命令執行後,才執行command2命令。

如:sleep 7h && make -j8 2>&1 |tee build-log.txt

shell知識

$ 美元符號:即使用之前已定義了的變數,變數名外面的花括號是可選的,加不加都行,加花括號是為了幫助直譯器識別變數的邊界,推薦給所有變數加上花括號,這是個好的程式設計習慣。

your_name="qinjx"

echo $your_name

echo $

單行注釋   以 # 開頭的行就是注釋,會被直譯器忽略。

多行注釋  可以使用以下格式:

:傳遞引數

我們可以在執行 shell 指令碼時,向指令碼傳遞引數,指令碼內獲取引數的格式為:$nn代表乙個數字,1 為執行指令碼的第乙個引數,2 為執行指令碼的第二個引數,以此類推……

以下例項我們向指令碼傳遞三個引數,並分別輸出,其中$0為執行的檔名:

echo "shell 傳遞引數例項!";

echo "執行的檔名:$0";

echo "第乙個引數為:$1";

echo "第二個引數為:$2";

echo "第三個引數為:$3";

為指令碼設定可執行許可權,並執行指令碼,輸出結果如下所示:

執行 chmod +x test.sh 

執行 ./test.sh 1 2 3

輸出結果:

shell 傳遞引數例項!

執行的檔名:./test.sh

第乙個引數為:1

第二個引數為:2

第三個引數為:3

表示式和運算子之間要有空格,例如 2+2 是不對的,必須寫成 2 + 2,

條件表示式要放在方括號之間,並且要有空格,例如:[$a==$b]是錯誤的,必須寫成[ $a == $b ]

完整的表示式要被 ` ` 包含,注意這個字元不是常用的單引號,在 esc 鍵下邊。如 val=`expr 2 + 2`

= 放在別的地方是賦值,放在if [ ] 裡就是字串等於,shell裡面沒有==的,那是c語言的等於

if  [  $ans  ]     等價於  if [ -n $ans ]

如果字串變數非空(then) , 空(else)

echo "input your choice:"

read ans

if [ $ans ]

then

echo no empty

else

echo empth

fi 傳統if 從句子——以條件表示式作為 if條件

if [ 條件表示式 ]

then

command

command

command

else

command

command

fi條件表示式

if [ -f  file ]    如果檔案存在

if [ -d ...   ]    如果目錄存在

if [ -s file  ]    如果檔案存在且非空 

if [ -r file  ]    如果檔案存在且可讀

if [ -w file  ]    如果檔案存在且可寫

if [ -x file  ]    如果檔案存在且可執行   

if [ int1 -eq int2 ]    如果int1等於int2   

if [ int1 -ne int2 ]    如果不等於    

if [ int1 -ge int2 ]       如果》=

if [ int1 -gt int2 ]       如果》

if [ int1 -le int2 ]       如果<=

if [ int1 -lt int2 ]       如果<

if  [ $a = $b ]                 如果string1等於string2

字串允許使用賦值號做等號

if  [ $string1 !=  $string2 ]   如果string1不等於string2       

if  [ -n $string  ]             如果string 非空(非0),返回0(true)  

if  [ -z $string  ]             如果string 為空

if  [ $sting ]                  如果string 非空,返回0 (和-n類似)    

Shell 程式設計知識點集錦

shell 指令碼是按行分隔每一條 shell 語句。如果每一條shell語句寫在單獨一行,此時可以加分號,也可以不加,沒有什麼區別。如果多條 shell 寫在同一行,那麼此時需一定要用分號將不用語句分隔開來。dev null 代表空裝置檔案,類似於 windows 的 站。代表重定向到 例如 ec...

shell 程式設計知識點彙總

程式設計的開始 bin bash 這部分內容是必須寫的,並且在首行,就是宣告這是乙個shell程式。如何執行shell指令碼 第一種是 附許可權給指令碼,直接執行 chmod 755 指令碼名字 例如 chmod 775 hello.sh 接著我們可以使用絕對路徑來執行我們的指令碼,就可以執行指令碼...

Shell 程式設計知識點集錦

shell 指令碼是按行分隔每一條 shell 語句。如果每一條shell語句寫在單獨一行,此時可以加分號,也可以不加,沒有什麼區別。如果多條 shell 寫在同一行,那麼此時需一定要用分號將不用語句分隔開來。輸出 輸入重導向 2 2 2檔案描述符 file descriptor 用乙個數字 通常為...