BASH內建變數的使用

2022-07-11 19:15:09 字數 2132 閱讀 3038

內部變數

$$與$bashpid都代表著執行程式的程序id,我們可以通過echo列印,並使用ps指令檢查得到相同的程序id

-echo $$

-echo $bashpid

-ps ax | grep bash

=11015pts/2 r 0:00

/bin/bash

位置引數(一)

。我們經常向乙個程式傳遞以空格間隔的引數,我們按先後次序分成$0(指令碼本身),$1(引數1),$2(引數2)......

。$#表示引數數量的總數,也就是總共有多少引數

。$*所有的引數以一行顯示

。$@所有的引數以空格分隔

。e_badargs=65

。if [ ! -n "$1" ]

。then

-echo "usage: 'basename $0' arg1 arg2 ..." #提示指令碼使用方法

-exit $e_badargs #退出返回自定義錯誤**

fi

強制退出程式本身示例(一)

。$!代表程序本身

。vi & \ #此處執行了乙個vi編輯工具以便測試

。; #休眠一定時間

。eval 'kill -9 $!' &>/dev/null;} #殺死程序本身

。eval 可以對字串的**當成bash**並執行,等同於

。"和$()

強制退出程式本身示例(二)

timeout=30    #超時時間

count=0 #初始值

vi &

。(())中變數無需在變數前使用$,而且沒有空格的侷限性

字元長度

。這三種方法都可以取出字串的長度

$expr length $string

expr "$string":'.*'

。stringz=abcabc123abcabc

。echo $ #得到15

。echo 'expr length $stringz' #得到15

。echo 'expr "$stringz" : '.*'『 #得到15

表示式方式取長度

。依據正規表示式取得相匹配部分的長度,注意表示式要用單引號

。expr match 」$string" '$substring』

。expr 「$string" : '$substring'

stringz=abcabc123abcabc

# |---------|

# 12345678

echo 'expr match "$stringz" 'abc[a-z]*.2'' # 得到8

echo 'expr "$stringz" : 'abc[a-z]*.2'' # 得到8

子字串的提取(符號)

。根據字元的位置提取字串中一段,注意此方法索引由0開始

。$。$

stringz=abcabc123abcabc

#0123456789......

echo $ #沒有給定長度,又從0(第乙個字元)開始,江區所有的字元得到abcabc123abcabc

echo $ #從1(第二個字元)開始得到bcabc123abcabc

echo $ #從7(第八個字元)開始得到23abcabc

echo $ #從第八個字元開始,取三個字元得到23a

子字串的提取(函式)

。也可以使用substr函式提取,注意這個函式索引從1開始

。expr substr $string $position $length

stringz=abcabc123abcabc

# 123456789......

echo 'expr substr $stringz 1 2' #得到ab

echo 'expr substr $stringz 4 3' #得到abc

Bash 內建引數

ppid 該bash的呼叫者process id.pwd 目前的工作目錄。oldpwd 上乙個工作目錄。reply 當read命令 沒有引數 時,直接設在reply上。uid user id。euid effective user id。bash bash的完整路徑。bash version bas...

Bash內建命令 shopt

1.shopt 命令簡介 2.shopt 引數含義說明 3.shopt 使用示例 1 extglob 引數 shopt 命令用於顯示和設定shell中的行為選項,通過這些選項以增強shell易用性。shopt命令若不帶任何引數選項,則可以顯示所有可以設定的shell操作選項。shopt psu op...

Bash內建命令 read

read ers a aname d delim i text n nchars n nchars p prompt t timeout u fd name 從標準輸入中讀取一行,或從 u選項指定的檔案描述符fd讀取一行,拆成單詞後,依次賦值給name echo 1 2 3 foo read a b...