日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

脚本语言语法规则

發布時間:2023/12/20 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 脚本语言语法规则 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

以下內容源于朱友鵬《物聯網大講堂》課程的學習,以及網站資源http://c.biancheng.net/cpp/view/6994.html的學習(強烈推薦),如有侵權,請告知刪除。


1、shell程序的第一行一般都是: #!/bin/sh

  • 以#!開始,后面加上一個pathname。
  • 指定shell程序執行時被哪個解釋器解釋執行。
  • 這里的/bin/sh意思就是這個shell將來被當前機器中/bin目錄下的sh可執行程序執行。
  • 可以將第一行寫為:#!/bin/bash來指定使用bash執行該腳本。
  • 在ubuntu中默認使用的解釋器sh其實不是bash,而是dash。dash是ubuntu中默認使用的腳本解釋器。
  • 腳本中的注釋使用#,#開頭的行是注釋行。如果有多行需要注釋,每行前面都要加#。(#就相當于是C語言中的//)

2、shell的本質

(1)shell就是把以前命令行中鍵入執行的命令寫成了程序。(批處理)

  • 為了避免反復在命令行下手工輸入,把手工輸入步驟記錄在文本中,然后通過執行該腳本,就能復現原來的手工輸入的效果。

(2)shell不需要編譯,編輯完可以直接運行。


3、shell中的變量定義和引用

  • 和C語言不同,shell是弱類型語言(語言中的變量如果有明確的類型則屬于強類型語言;變量沒有明確類型就是弱類型語言)。
  • 在shell編程中,沒有類型這個概念。

(1)變量定義時可以初始化,使用=進行初始化賦值

  • =兩邊不能有空格
  • shell對語法非常在意,非常嚴格。很多地方空格都是必須沒有或者必須有,而且不能隨意有沒有空格。
  • 變量名的命名須遵循如下規則:首個字符必須為字母(a-z,A-Z);中間不能有空格,可以使用下劃線(_);不能使用標點符號;不能使用bash里的關鍵字。

(2)變量賦值。

  • 新的賦值會覆蓋老的賦值。

(3)變量引用。

  • shell中引用一個變量必須使用$符號,$符號就是變量解引用符號。即,$符號后面跟一個字符串,這個字符串就會被當作變量去解析。
  • 如果這個字符串本身沒有定義,執行時把此變量解析為空。即在shell中沒有被定義的變量,相當于一個定義并賦值為空的變量。
  • 變量引用的時候可以$var,也可以${var}。某些情況下只能用${var}而不能簡單的$var。

(4)只讀變量、刪除變量


(5)變量類型


4、字符串(單引號、雙引號、無引號)

(1)shell中使用字符串可以直接使用。

(2)shell中可以使用單引號來表示字符串;

(3)shell中可以使用雙引號來表示字符串;

  • 字符串內部有空格時也可以;

  • $加變量名可以取變量的值;
  • 反引號仍表示命令替換;
  • \$表示$的字面值輸出$符號;
  • \`表示`的字面值(反引號);
  • \"表示"的字面值;\\表示\的字面值;
  • 除上情況之外,在其它字符前面的\無特殊含義,只表示字面值。

5、shell中調用linux命令

(1)直接執行;

(2)反引號括起來執行。

  • 為了得到命令的返回值(結果值),用一對反引號(和~在一個按鍵上)來調用執行命令。

6、shell中的if結構

(1)典型if語言格式

if [表達式]; then

? ?xxx

? ?yyy

else

? ddd

? ?uuu

fi

(2)if的典型應用

  • 判斷文件是否存在。(-f ),注意[]里面前后都有空格,不能省略。
  • 判斷目錄是否存在。(-d)
  • 判斷字符串是否相等("str1" = "str2"),注意用一個等號而不是兩個。
  • 判斷數字是否相等(-eq)、大于(-gt)、小于(-lt)、大于等于(-ge)、小于等于(-le)
  • 判斷字符串是否為空(-z),注意-z判斷時如果變量本身沒定義也是不成立(也就是說-z認為沒定義不等于為空)

(3)if判斷式中使用“-o”表示邏輯或

  • 相當于在if后面的條件式中用邏輯與、邏輯或來連接2個式子,最終的if中是否成立取決于2個式子的邏輯運算結果。

(4)邏輯與&&和邏輯或||與簡寫的if表達式相結合


(5)test命令用于檢查某個條件是否成立,類似于if中的方括號。細節如下




7、shell中的循環結構

(1)for循環

  • 能看懂、能改即可。不要求能夠完全不參考寫出來。
  • 嵌入式并不需要完全重新手寫shell,系統管理員(服務器運維人員,應用層系統級管理開發的才需要完全掌握shell)



(2)while循環

  • 和C語言的循環在邏輯上無差別
  • 注意格式要求,譬如:while后面的[]兩邊都有空格,[]后面有分號分號(如果do放在一行的話),i++的寫法中有兩層括號。


8、echo的創建和追加輸入文件

(1)使用echo指令新建一個文件,并且將一些內容傳入這個文件中。創建文件并輸入內容的關鍵就是>。

(2)使用echo指令配合追加符號>> 向一個已經存在的文件末尾追加輸入內容。(3)echo會自動換行;

上面為了輸出雙引號,使用了\“轉義字符。


9、case語句

(1)shell中的case語句和C語言中的switch case語句作用一樣,格式有差異;

(2)shell中的case語句沒有break。

  • shell中的case默認就是匹配上哪個執行哪個,不會執行完其中一個后繼續執行后面的其他case。


10、shell程序的傳參

(1)shell程序本身也可以在調用時傳參。

(2)使用一些特定符號來表示:

  • $#表示調用該shell時傳參的個數。($#計數時只考慮真正的參數個數);
  • $0、$1、$2……則依次表示傳參的各個參數。
  • C語言:./a.out ? ?aa ? ?bb ? ?cc ? ?,則argc = 4, argv[0] = ./a.out, argv[1]是第一個有效參數……
  • shell:source a.sh ? aa ? bb ? cc ?,則$# = 3,$0是執行這個shell程序的解析程序的名字,$1是第一個有效參數的值,$2是第2個有效參數的值……


11、while循環和case語言和傳參結合

(1)shell中的break關鍵字和C語言中意義相同(都是跳出)但是用法不同。

  • shell中case語句默認不用break,因此在shell中break只用于循環跳出。
  • 當while中內嵌case語句時,case中的break是跳出外層的while循環的,不是用來跳出case語句的。



(2)shell中的$#,$1等內置變量的值是可以被改變,被shift指令改變。

  • shift指令有點像左移運算符,把shell程序的傳參左移一個,原來的$2變成新的$1,原來的$#少了1個。

12、運算符

(1)算術運算符 #!/bin/sha=10 b=20 val=`expr $a + $b` echo "a + b : $val"val=`expr $a - $b` echo "a - b : $val"val=`expr $a \* $b` echo "a * b : $val"val=`expr $b / $a` echo "b / a : $val"val=`expr $b % $a` echo "b % a : $val"if [ $a == $b ] thenecho "a is equal to b" fiif [ $a != $b ] thenecho "a is not equal to b" fi

(2)關系運算符


(3)布爾運算符


(4)字符串運算符


(5)文件測試運算符



13、文件包含


總結

以上是生活随笔為你收集整理的脚本语言语法规则的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。