shell最基礎的筆記

來源:互聯網
上載者:User
注意:“=”左右兩邊都不能有空格,BASH中的語句結尾不需要分號程式1#!/bin/sh#echo somethingecho "hello world"echo "hello !!"cd /root/Desktopmkdir ./abc程式2,變數不需要類型,也不需要定義,使用的時候加上$,賦值的時候不用#!/bin/sh#set variable aa="hello world"#print aecho "A is:"echo $a如果是在字串中如何輸出變數num=2echo "this is the ${num}nd"會變成this is the 2nd重要提示:$#傳入指令碼的命令列的參數個數$*所有命令列的參數值(空格隔開)$#命令本身(shell檔案名稱)$1第一個命令列參數$n第n個命令列參數程式3s3中#!/bin/shecho "number of vars:" $#echo "values of vars" $*echo "value of var1"$1echo "value of var2"$2echo "value of var3"$3echo "value of var4"$4終端中運行並輸入 ./s3 1 2 3 4得到的輸出是number of vars:4values of vars:1 2 3 4 value of var1:1value of var2:2value of var3:3value of var4:4局部變數在變數首次被賦值的時候加上local關鍵字可以聲明一個局部變數,例:s4#!/bin/bashhello="var1"echo $hellofunction func1(){local hello="var2"echo $hello}func1echo $hello運行./s4得到var1var2var3!!!!如果去掉local,上面的程式將輸出vr1,vr2,vr2IF語句格式:if [expression]then#code blockfi或者if [expression]then #code blockelse #code blockfi或者多重ifif [expression]then #code blockelse if [expression]then #code blockelse #code blockfififi#每個if對應一個fi比較:比較操作整數操作字串操作相同-eq=不同-ne!=大於-gt>小於-lt<大於或等於-ge小於或等於-le為空白-z不為空白-neg:注意“[“”]“符號的左右都留有空格,“=”左右都有空格比較整數a和b是否相等 if [ $a = $b ]  (也可以用-eq)判斷整數a是否大於整數bif [ $a -gt $b ] 比較字串a和b是否相等if [ $a = $b ] 判斷字串a是否為空白if [ -z $a ] 判斷整數變數a是否大於bif [ $a -gt $b ] 判斷:-e檔案已經存在-f檔案是普通檔案-s檔案大小不為零-d檔案是個目錄-r檔案或目錄對目前使用者可以讀取-w檔案或目錄對目前使用者可以寫入-x檔案或目錄對目前使用者可移植性程式5#!/bin/shfolder=/home [ -r "$folder" ] && echo "Can read $folder"(當前面的判斷成立,執行&&後的) [ -f "$folder" ]    ||echo "this is not file"(判斷為假執行||後的語句) 由於folder是個目錄,可讀,故不輸出第一條語句 由於folder是個目錄,不算檔案,故輸出第二條語句   For迴圈 格式: for var in [list] do #code block done 其中$var是個迴圈控制變數,[list]是var需要遍曆的一個集合,do/done對包含了迴圈體,相當於C語言的大括弧。另外如果do和for被寫在同一行,必須在do前面加上“;”。 如:for $var in [list] ; do  程式s6 #!/bin/bash for day in Sun Mon Tue Wed Thu Fri Sat do echo $day done  程式s8:如果列表被包含在一對雙引號內,則被認為是一個元素,在這裡只運行一次。 #!/bin/bash for day in "Sun Mon Tue Wed Thu Fri Sat" do  echo $day done 注意:for所在的那一行變數名前面不加 $,因為這是賦值的過程 ,而在迴圈體裡面,echo所在行的變數是必須加上$符號的。  while迴圈 while [ condition ]  do #code block done  until迴圈 until [ condition ] do  #code block done  while 和 until 的區別在於 while 是為真的時候執行,而until 是為假的時候執行。 case語句:bash 中的 case 結構和C語言的 switch 語句功能類似,可以進行多選項分支控制。case "$var" incondition1 ) ;;condition2 ) ;;*)default statments;;esac程式s7#!/bin/bashecho "Hit a key,then hit return."read Keypresscase "$Keypress" in[A - Z] ) echo "Uppercase Letter";;[a - z] ) echo "Lowercase Letter";;[0 - 9] ) echo "Digit";;*) echo"Punctuation,whitespace,or other";;esac特殊:if [ -z $a ] || [ -z $b ]或者exit 1錯誤退出,在if中可以省略firead Keypress讀入一行

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.