shell中$0,$?,$!等的特殊用法

來源:互聯網
上載者:User

標籤:

變數說明:
$$
Shell本身的PID(ProcessID)
$!
Shell最後啟動並執行後台Process的PID
$?
最後啟動並執行命令的結束代碼(傳回值)
$-
使用Set命令設定的Flag一覽
$*
所有參數列表。如"$*"用「"」括起來的情況、以"$1 $2 … $n"的形式輸出所有參數。
[email protected]
所有參數列表。如"[email protected]"用「"」括起來的情況、以"$1" "$2" … "$n" 的形式輸出所有參數。
$#
添加到Shell的參數個數
$0
Shell本身的檔案名稱
$1~$n
添加到Shell的各參數值。$1是第1參數、$2是第2參數…。

 

樣本:
我們先寫一個簡單的指令碼,執行以後再解釋各個變數的意義
# touch variable
# vi variable
指令碼內容如下:
#!/bin/sh
echo "args number:$#"
echo "script name:$0"
echo "first arg:$1"
echo "second arg:$2"
echo "args:[email protected]"


儲存退出


賦予指令碼執行許可權
# chmod +x variable


執行指令碼
# ./variable aa bb
args number:2
script name:./variable
first arg: aa
second arg: bb
args:aa bb


通過顯示結果可以看到:
$# 是傳給指令碼的參數個數
$0 是指令碼本身的名字
$1 是傳遞給該shell指令碼的第一個參數
$2 是傳遞給該shell指令碼的第二個參數
[email protected] 是傳給指令碼的所有參數的列表

 

$()在bash中叫做 命令替換,回調用一個subshell。通俗點講,就是被它括起來的命令部分將優先執行。

$(command)命令替換,和`command`是同樣的作用

#Examples:
#  basename /usr/bin/sort       Output "sort".
#  basename include/stdio.h .h  Output "stdio".
#Examples:
#  dirname /usr/bin/sort  Output "/usr/bin".
#  dirname stdio.h        Output ".".


NAME=$(basename $VCF .vcf.gz)
DIR=$(dirname $VCF)

shell中$0,$?,$!等的特殊用法

相關文章

聯繫我們

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