shell指令碼學習第四天——bash內部變數,變數主串,變數替換

來源:互聯網
上載者:User
一、bash內部變數:

常見的內部命令:echo,eval,exec,export,readonly,read,shift ,wait,exit和點(.)也就是source命令。

命令 作用
echo 變數名 將變數名表指定的變數顯示到標準輸出
eval 讀取一連串的參數,然後再依參數本身的特性來執行
exec命令參數 當Shell執行到exec語句時,不會去建立新的子進程,而是轉去執行新的命令,當指定的命令執行完時,該進程(也就是當初的Shell)就終止了,所以Shell程式中的exec後面的語句將不再被執行
export 變數名=value Shell 可以用export把它的變數向下打入子Shell,從而讓子進程繼承父進程中的環境變數,但子Shell不能用export把他的變數向上帶入父Shell
readonly 變數名 從標準輸入讀字串,傳給指定變數
shift 使變數位置發生位移,即 $2成為$1,$3成為$2,每執行一次$#-1
1、eval:

一個eval只能使shell對參數多一次處理,因此有幾個eval就可以多加幾次。
2、shift

3、readonly

4、exec

執行完後直接退出系統。
二、變數主串:

export name="i am yangni"echo ${#name}echo ${name:2}echo ${name:2:3}echo ${name#i am}echo ${name%ni}echo ${name/yang/chun}

應用執行個體:

批量修改檔案名稱

for  f  in ` ls *.c`    //設定f的值do     mv $f  `echo ${f/yangni/qicheng}`done

當然還有更簡單的方法,那就是rename

rename xxx yyy *.c :把所有含字串xxx的.c檔案,xxx改為yyy

三、變數替換: 1、${value:-word} 判斷變數是否定義

result=${test : -UNSET} :如果變數test定義了,顯示test內容。如果test未定義,列印UNSET(一個字串)

//test未定義:[yangni@centos6 abc]$ result=${test:=UNSET}[yangni@centos6 abc]$ echo $resultUNSET//test定義:[yangni@centos6 abc]$ test=3[yangni@centos6 abc]$ result=${test:=UNSET}[yangni@centos6 abc]$ echo $result3
2、${value:word} 若變數value未定義,將word賦值給value,確保變數始終有值。

result=${test :=UNSET} :變數未定義,將字串UNSET賦值給test

[yangni@centos6 abc]$ unset test[yangni@centos6 abc]$ result=${test:=UNSET}[yangni@centos6 abc]$ echo $test     //test未定義,將UNSET賦值給它      UNSET    

${value-word}類似於2,變數value不存在用word替代。

1./etc/init.d/httpd
2./etc/init.d/crond
3.對變數的路徑操作最好先判斷是否為空白,特別是刪除操作:
path =/server/backup
find ${path:= /tmp} -name “*.tat.gz” -type f |xargs rm -f
rm -fr ${path:= /tmp} //刪除路徑 每日編程練習:

#!/bin/sh result=1while [ $# -gt 0 ]do   result=`expr $result \* $1`   shiftdone  echo $result

用shift實現所有參數的乘積。注意,乘號要用逸出字元轉義,不然會報錯。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.