1.shell中的特殊位置參數變量
$0:擷取目前執行的shell腳本的檔案名,如果執行腳本包含了路徑,那麼就包括腳本路徑
$n:擷取目前執行的shell腳本的第n個參數,n=1..9,當n為0時表示腳本的檔案名;如果n大于9,則用大括号括起來
比如${10},接的參數以空格隔開
$#:擷取目前執行的shell腳本後面接的參數的總個數
$*:擷取目前shell腳本所有傳參的參數,不加引号和$@相同;如果給$*加上雙引号,如"$*",則表示把所有的參數視
為單個字元串,相當于"$1 $2 $3"
$@:擷取目前shell腳本所有傳參的參數,不加引号和$*相同;加上雙引号,如"$@",則表示将所有的參數視為不同的
獨立字元串,相當于"$1" "$2" "$3" "..." 這是将多參數傳遞給其他程式的最佳方式,因為它會保留所有的内嵌
在每個參數裡的任何空白。
2.shell程序中的特殊狀态變量
$?:擷取執行上一個指令的執行狀态傳回值(0為成功,非0為失敗),常用
$$:擷取目前執行的shell腳本的程序号(PID),不常用
$!:擷取上一個在背景工作的程序的程序号(PID),不常用
$_:擷取在此之前執行的指令或腳本的最後一個參數,不常用
3.bash shell内置變量指令
bash shell包含一些内置指令。這些内置指令在目錄清單裡是看不見的,它們由shell本身提供。常用的内部指令有:
echo、eval、exec、export、read、shift。
echo:在螢幕上輸出資訊
指令格式:echo args
參數:
-n:不換行輸出内容
-e:解析轉義字元
轉義字元:
\n:換行
\r:回車
\t:制表符(tab)
\b:倒退
\v:縱向制表符
eval:
指令格式:eval args
功能:當shell程式執行到eval語句時,shell讀入參數args,并将它們組合成一個新的指令,然後執行
exec:
[root@www script]# vim exec.sh
[root@www script]# cat exec.sh
#!/bin/bash
exec </script/1.txt
while read line
do
echo $line
done
echo ok
[root@www script]# seq 5 > 1.txt
[root@www script]# cat 1.txt
1
2
3
4
5
[root@www script]# sh exec.sh
ok