shell指令碼學習第三天——特殊變數

來源:互聯網
上載者:User
一、位置變數:

$0 擷取當前執行指令碼的檔案名稱,包括指令碼路徑。
$n 擷取當前執行指令碼的第n個參數,1~9,大於9,用{}括起來,比如:${10}。
$# 表示參數個數

seq 9|sed 's#[0-9]#$&#g'seq -s " $" 1 10 | sed 's/1/$1/'


以上用兩種方法用產生“$1 $2一直到$10 ”用到了一個函數seq,下面對這個函數進行介紹。

用法:seq [選項]… 尾數
 或:seq [選項]… 首數 尾數
 或:seq [選項]… 首數 增量 尾數
以指定增量從首數開始列印數字到尾數。 -f, –format=格式 使用printf 樣式的浮點格式 -s, –separator=字串 使用指定字串分隔數字(預設使用:\n) -w, –equal-width 在列前添加0 使得寬度相同 –help 顯示此協助資訊並退出 –version 顯示版本資訊並退出

如果省略了首數或者增量,則預設其值為1,即使這樣尾數仍小於首數。
首數、增量和尾數均以浮點數形式解釋。當首數小於尾數時增量一般為正值,
相反在首數大於尾數時增量一般為負數。
指定的格式必須適用於顯示”double”類型的參數;當首數、增量和尾數均為指定
精確度的定點十進位數時預設為”%.精確度f”,否則預設為”%g”。

$ seq 1000      #起始預設是 1,間隔預設也是1$ seq 2 100     #從2列印到100,間隔預設是1$ seq 1 3 10    #從1到10,間隔為3,結果是:1 4 7 10$ seq -s " $" 1 10  #以 $作為分隔字元列印1~10

關於sed函數的用法可參考 :
http://blog.csdn.net/qicheng777/article/details/70847365

運行一個簡單的shell程式 來觀察$0以及$#具體含義:
二、進程狀態命令:

1、\$? 擷取上一個指令的傳回值。

一般用於判斷上一個命令是否執行成功,如果成功為0。下面是$?的傳回值:

傳回值 含義
0 表示運行成功
2 許可權拒絕
1~125 運行失敗,指令碼命令、系統命令錯誤或參數傳遞錯誤
126 找到命令但是無法執行
127 未找到要啟動並執行命令
>128 命令被系統強制結束

執行個體:

[yangni@centos6 shell]$ find -aafind: unknown predicate `-aa'[yangni@centos6 shell]$ echo $?  1              //參數錯誤   [yangni@centos6 shell]$ maek     -bash: maek: command not found[yangni@centos6 shell]$ echo $?127            //命令未找到[yangni@centos6 shell]$ ./a.sh-bash: ./a.sh: Permission denied[yangni@centos6 shell]$ echo $?126            //找到命令,無法執行[yangni@centos6 shell]$ lsa.sh[yangni@centos6 shell]$ echo $?0              //成功執行返回0

2、$$ 擷取當前shell進程號。

寫一個死迴圈來測試:

#!/bin/bashecho $$ > a.log while truedo    uptime    sleep 2done

其他一些狀態命令:

$! 執行上一個指令的PID$_ 在之前執行的命令或指令碼的最後一個參數$* 將所有參數視為單個字串$@ 這個程式的所有參數,這是把參數傳給其他程式的   最佳方式
$*和$@的區別:

$* 將所有參數視為單個字串
$@ 這個程式的所有參數,這是把參數傳給其他程式的
最佳方式

如果帶引號:"$1$2$3" 單個參數$@ 這個程式的所有參數,這是把參數傳給其他程式的   最佳方式"$1" "$2" "$3"  三個參數如果不加引號,列印出來就不一樣

相關文章

聯繫我們

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