在shell中,內(nèi)建(builtin)命令pwd,格式以下:
pwd [-LP]
pwd命令用于打印當前工作目錄的絕對路徑,選項“-L”表示路徑可能包括符號鏈接,選項“-P”表示路徑為物理路徑,不包括符號鏈接,不指定任何選項時,默許效果同選項“-L”。成功履行時,pwd命令的退出狀態(tài)為0。
在shell中,內(nèi)建(builtin)命令readonly,格式以下:
readonly [-aAf] [-p] [name[=word] ...]
readonly命令用于聲明變量或函數(shù)的屬性為只讀,聲明后這些變量或函數(shù)不可修改。在聲明只讀屬性時,“-a”用于索引即下標數(shù)組,“-A”用于關(guān)聯(lián)即鍵值對數(shù)組,“-f”用于函數(shù),不使用這3個選項時默許為變量,對函數(shù)沒有影響,后面隨著變量名或函數(shù)名name,對變量來講,可以在聲明只讀屬性的同時進行賦值,函數(shù)則沒有這個用法。不指定任何選項或指定了選項“-p”時,顯示當前的只讀變量,包括數(shù)組,不包括函數(shù)。如果只使用選項”-a“或”-A“或”-f“,則相應(yīng)的只顯示當前只讀的索引數(shù)組或關(guān)聯(lián)數(shù)組或函數(shù)。成功履行時,readonly命令的退出狀態(tài)為0。
以下是readonly命令的幾個例子:
$ readonly
declare -r BASHOPTS="checkwinsize:cmdhist:complete_fullquote:expand_aliases:extglob:extquote:force_fignore:histappend:interactive_comments:progcomp:promptvars:sourcepath"
declare -ir BASHPID
declare -r BASH_COMPLETION_COMPAT_DIR="/etc/bash_completion.d"
declare -ar BASH_VERSINFO='([0]="4" [1]="3" [2]="46" [3]="1" [4]="release" [5]="x86_64-pc-linux-gnu")'
declare -ir EUID="1000"
declare -ir PPID="30101"
declare -r SHELLOPTS="braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor"
declare -ir UID="1000"
$ readonly foo=abc
$ foo=123
bash: foo: readonly variable
$ bar=abc
$ readonly bar
$ bar=123
bash: bar: readonly variable
$ index_array=(apple pear banana)
$ readonly -a index_array
$ declare -A associate_array=([a]=apple [p]=pear [b]=banana)
$ readonly -A associate_array
$ index_array=
bash: index_array: readonly variable
$ associate_array=
bash: associate_array: readonly variable
$ foobar() { echo "it's a function";}
$ foobar() { echo "it's a function";}
$ readonly -f foobar
$ foobar() { echo "it's a function";}
bash: foobar: readonly function
$ readonly -p
declare -r BASHOPTS="checkwinsize:cmdhist:complete_fullquote:expand_aliases:extglob:extquote:force_fignore:histappend:interactive_comments:progcomp:promptvars:sourcepath"
declare -ir BASHPID
declare -r BASH_COMPLETION_COMPAT_DIR="/etc/bash_completion.d"
declare -ar BASH_VERSINFO='([0]="4" [1]="3" [2]="46" [3]="1" [4]="release" [5]="x86_64-pc-linux-gnu")'
declare -ir EUID="1000"
declare -ir PPID="30101"
declare -r SHELLOPTS="braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor"
declare -ir UID="1000"
declare -Ar associate_array='([a]="apple" [b]="banana" [p]="pear" )'
declare -r bar="abc"
declare -r foo="abc"
declare -ar index_array='([0]="apple" [1]="pear" [2]="banana")'
$ readonly -a
declare -ar BASH_VERSINFO='([0]="4" [1]="3" [2]="46" [3]="1" [4]="release" [5]="x86_64-pc-linux-gnu")'
declare -ar index_array='([0]="apple" [1]="pear" [2]="banana")'
$ readonly -A
declare -Ar associate_array='([a]="apple" [b]="banana" [p]="pear" )'
$ readonly -f
foobar ()
{
echo "it's a function"
}
declare -fr foobar
在shell中,內(nèi)建(builtin)命令return,格式以下:
return [n]
return命令可以出現(xiàn)在兩個地方。1個是函數(shù)中,用于退出函數(shù),退出狀態(tài)為n,不指定n時退出狀態(tài)為函數(shù)中履行的最后1個命令的退出狀態(tài)。另外一個地方是shell腳本中用于退出腳本履行,且履行腳本時必須使用句點命令或source命令,退出狀態(tài)為n,不指定n時退出狀態(tài)為腳本中履行的最后1個命令的退出狀態(tài)。如果在命令行履行return命令,就會出錯:
$ return
bash: return: can only `return' from a function or sourced script
在shell中,內(nèi)建(builtin)命令shift,格式以下:
shift [n]
shift命令用于移動位置參數(shù),向左移動n個位置,默許移動1個位置,移動時,左側(cè)的參數(shù)被覆該,右側(cè)的參數(shù)被棄用unset。n的最小值為0,最大值為位置參數(shù)的個數(shù)。n無效時,不進行任何移動,退出狀態(tài)為1。
下面是shift命令在函數(shù)中利用的例子:
$ foo() { while shift; do echo ${1:-null}; done }
$ foo a b c d
b
c
d
null
$ foo() { while shift 2; do echo ${1:-null}; done }
$ foo a b c d
c
null