bash-高级编程--位置变量
生活随笔
收集整理的這篇文章主要介紹了
bash-高级编程--位置变量
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
特殊變量類型
局部變量
這種變量只有代碼塊或者函數(shù)中才可見
如果變量用local 來聲明, 那么它就只能夠在該變量被聲明的代碼塊中可見. 這個(gè)代碼塊就是局
部"范圍". 在一個(gè)函數(shù)中, 一個(gè)局部變量只有在函數(shù)代碼塊中才有意義.
環(huán)境變量
這種變量將影響用戶接口和shell的行為
通常情況下,每個(gè)進(jìn)程都有自己的"環(huán)境",這個(gè)環(huán)境是由一組變量組成的, 這些變量存有進(jìn)程可能需要引用的信息。
一個(gè)腳本可以通過export傳遞環(huán)境變量給子進(jìn)程,但是子進(jìn)程不能傳遞環(huán)境變量給父進(jìn)程。
位置參數(shù)
從命令行傳遞到腳本的參數(shù):$0, $1, $2, $3 ...
$0就是腳本自身的名字
#! /bin/bash # 這個(gè)腳本用于測試腳本變量 # $0 代表變量本省 echo -e '$0' "= $0" # 腳本的第一個(gè)參數(shù) echo -e '$1' "= $1" # 第二個(gè)參數(shù) echo -e '$2' "= $2" # 第三個(gè)參數(shù) echo -e '$3' "= $3"運(yùn)行結(jié)果:
andrew@andrew:/work/linux-sys/bash/2.基本/src$ bash bash_name.sh name s d $0 = bash_name.sh $1 = name $2 = s $3 = dbash_name_test.sh
#!/bin/bash # 作為用例, 調(diào)用這個(gè)腳本至少需要10個(gè)參數(shù), 比如: # bash bash_name_test.sh 1 2 3 4 5 6 7 8 9 10 MINPARAMS=10echoecho "The name of this script is \"$0\"." # 添加./是表示當(dāng)前目錄 echo "The name of this script is \"`basename $0`\"." # 去掉路徑名, 剩下文件名, (參見'basename')echoif [ -n "$1" ] # 測試變量被引用. thenecho "Parameter #1 is $1" # 需要引用才能夠轉(zhuǎn)義"#" fiif [ -n "$2" ] thenecho "Parameter #2 is $2" fiif [ -n "$3" ] thenecho "Parameter #3 is $3" fi# ...if [ -n "${10}" ] # 大于$9的參數(shù)必須用{}括起來. thenecho "Parameter #10 is ${10}" fiecho "-----------------------------------" echo "All the command-line parameters are: "$*""if [ $# -lt "$MINPARAMS" ] thenechoecho "This script needs at least $MINPARAMS command-line arguments!" fiechoexit 0執(zhí)行結(jié)果
andrew@andrew:/work/linux-sys/bash/2.基本/src$ bash ./bash_name_test.sh 1 2 3 4 5 6 7 8 9 0 The name of this script is "./bash_name_test.sh". The name of this script is "bash_name_test.sh".Parameter #1 is 1 Parameter #2 is 2 Parameter #3 is 3 Parameter #10 is 0 ----------------------------------- All the command-line parameters are: 1 2 3 4 5 6 7 8 9 0有時(shí)候腳本中需要在不知道輸入 多少參數(shù)的情況下,定位到最后一個(gè)可以 借助$#實(shí)現(xiàn), $#表示參數(shù)的個(gè)數(shù)的變量
args=$# # 位置參數(shù)的個(gè)數(shù). lastarg=${!args} # 或: lastarg=${!#} #(感謝, Chris Monson.) # 注意, 不能直接使用 lastarg=${!$#} , 這會(huì)產(chǎn)生錯(cuò)誤. shift命令會(huì)重新分配位置參數(shù),其實(shí)就是把所有的位置參數(shù)向左移動(dòng)一個(gè)位置使用shift將位置參數(shù)進(jìn)行整體的左移
#! /bin/bash # shift 是將位置參數(shù)整體向左移動(dòng)的命令# $@是,一個(gè)一個(gè)打印出命令參數(shù) # $* 與$@達(dá)到的效果一樣,但是$*是講位置參數(shù)作為一個(gè)整體輸出的意思echo "$@"shiftecho "$@"shift echo "$*" andrew@andrew:/work/linux-sys/bash/2.基本/src$ bash shift_test.sh 1 2 3 5 6 1 2 3 5 6 2 3 5 6 3 5 6總結(jié)
以上是生活随笔為你收集整理的bash-高级编程--位置变量的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ubuntu16.04上安装graphy
- 下一篇: 【2017年第1期】基于征信数据观中国近