shell指令碼學習:特殊變數和C語言格式迴圈

來源:互聯網
上載者:User

         shell指令碼裡有幾個特殊的變數,它們在有些時候其很大的作用,今晚把它們重溫一下,並做個小總結。

這些特殊變數是:

$@         所有變數當作一個字串
$*           每一個是一個獨立的一串字串  
$#           引用通過命令列向指令碼傳遞的參數的個數
$0          指令碼的名字自身
$$         當前命令的進程號
$_          最後一個命令的執行的顯示結果
$!          在後台啟動並執行最近的命令的PID號
$-           引用當前這個命令或指令碼的選項的引導符

 

通過下面的一個小指令碼,可以看出他們之間的不同:

#!/bin/bashIFS=,echo $1echo $2echo $@echo $*echo $#echo `basename {1}`echo $!echo $-

執行結果如下

[root@server45 tmp]# ./a.sh a b c d e f g h aba b c d e f g ha b c d e f g h8a.sha.sh3695hB

 

shell指令碼同時也提供了類似C語言的for迴圈,格式如下:

for (( a=1;a<10;a++ )) do            

     ....

     ....

done
它的寫法類似於C ,它的嵌套寫法如下:
for (( a=1;a<=3;a++ ))
do
    ...
    for (( b=1;b<=3;b++ ))
    do
           ...
    done
done   

可以同時處理輸出兩個命令列,增加了指令碼的靈活度和擴充度

例如

#!bin/bashfor (( a=10;a>0;a-- ))do   echo "hello 1"   for (( b=1;b<=10;b++ ))   do       echo "hello 2"   donedone

 

[root@server45 tmp]# ./b.sh hello 1hello 2hello 2hello 2hello 2hello 2hello 2hello 2hello 2hello 2hello 2hello 1

 

 

 

 

 

 

聯繫我們

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