天天看點

shell--特殊位置參數變量及常用内置變量

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