Linux shll中的$符號 — 讀取命令列參數

來源:互聯網
上載者:User

檔案名稱test.sh

USER=nihaoecho "hello $USER"#$0 指令碼名echo "script name is : `basename $0`"#$1 第一個變數名echo "first param is : $1"#$* 所有變數echo "all params are : $*"#$# 變數長度echo "params' length is : $# "#$@ 所有變數echo "all params are : '$@'"#$$ 當前指令碼進程echo "process id of this script is : $$"#$? exit 退出狀態echo "exit status is : $?"#$! 最後一個守護進程pid,last daemon process (&) process idecho "last daemon process id is : $!" 

 輸出結果:

[admin@v035114 shuohai]$ ./test.sh a b chello nihaoscript name is : test.shfirst param is : aall params are : a b cparams' length is : 3 all params are : 'a b c'process id of this script is : 10837exit status is : 0last daemon process id is : 

選擇第一個參數、最後一個、倒數第二個、從第二個連續的幾個參數

[admin@arch036088.sqa.cm4 ~]$ cat test.sh #all params 全部參數echo $@#all params  全部參數echo $*#length of params 參數的長度echo $##first param 第一個參數echo $1#last param 最後一個參數echo ${@:${#@}}#last 2 param 最後兩個參數echo ${@:${#@}-1}#last 2nd param 倒數第二個參數echo ${@:${#@}-1:1}#from 2nd to last param 從第二個到最後一個參數echo ${@:2}#from 2nd, count 2 從第2個參數開始,連續2個參數echo ${@:2:2}

輸出結果

12 23 43 3 3412 23 43 3 34512343 34323 43 3 3423 43

讀取最後一個參數另一種方法 ${$#} 但是大括弧中不能使用美元$符號,要用! 代替

[admin@v035114 shuohai]$ cat ./test.sh echo ${!#}[admin@v035114 shuohai]$ ./test.sh 12 34 4 5 5

遍曆所有參數的另一種方法

[admin@v035114 shuohai]$ cat ./test.sh       INDEX=1 for param in $@do      echo $INDEX "--" $param                                                                INDEX=$[ $INDEX+1 ]doneINDEX=1for param in $*do        echo $INDEX "--" $param        INDEX=$[ $INDEX+1 ]done[admin@v035114 shuohai]$ ./test.sh 12 34 4 5 1 -- 122 -- 343 -- 44 -- 51 -- 122 -- 343 -- 44 -- 5

只列印第2個到第4個參數,一共5個參數

[admin@v035114 shuohai]$ cat param.sh INDEX=1 for param in $@do        if [ $INDEX -ge 2 ] && [ $INDEX -le 4 ]; then                echo $INDEX "--" $param        fi        INDEX=$[ $INDEX+1 ]done[admin@v035114 shuohai]$ ./param.sh 12 34 4 52 -- 343 -- 44 -- 5

訪問第10個參數之後,不能直接使用$10訪問了,要使用大括弧

[admin@v035114 shuohai]$ cat test.sh echo $*echo $11    #錯誤的方式echo $[ ${10} ]echo $[ ${11} ][admin@v035114 shuohai]$ ./test.sh 12 34 4 5 5 6 7 8 9 10 1112 34 4 5 5 6 7 8 9 10 11121  1011

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.