linux变量怎么替换字符,shell变量里的字符替换

b=${a/123/321};将${a}里的第一个123替换为321

b=${a//123/321};将${a}里的所有123替换为321

shell调试:

sh -x aaa.sh

from:

shell十三问

不過,假如你只看到 ${ } 只能用來界定變量名稱的話,那你就實在太小看 bash 了﹗有興趣的話,你可先參考一下

cu 本版的精華文章:為了完整起見,我這裡再用一些例子加以說明

${ } 的一些特異功能:假設我們定義了一個變量為:file=/dir1/dir2/dir3/my.file.txt我們可以用

${ } 分別替換獲得不同的值:${file#*/}:拿掉第一條

/ 及其左邊的字串:dir1/dir2/dir3/my.file.txt${file##*/}:拿掉最後一條

/ 及其左邊的字串:my.file.txt${file#*.}:拿掉第一個

. 及其左邊的字串:file.txt${file##*.}:拿掉最後一個

. 及其左邊的字串:txt${file%/*}:拿掉最後條

/ 及其右邊的字串:/dir1/dir2/dir3${file%%/*}:拿掉第一條

/ 及其右邊的字串:(空值)${file%.*}:拿掉最後一個

. 及其右邊的字串:/dir1/dir2/dir3/my.file${file%%.*}:拿掉第一個

. 及其右邊的字串:/dir1/dir2/dir3/my記憶的方法為:

# 是去掉左邊(在鑑盤上 # 在 $ 之左邊)

% 是去掉右邊(在鑑盤上 % 在 $ 之右邊)

單一符號是最小匹配﹔兩個符號是最大匹配。

${file:0:5}:提取最左邊的

5 個字節:/dir1${file:5:5}:提取第

5 個字節右邊的連續 5 個字節:/dir2我們也可以對變量值裡的字串作替換:${file/dir/path}:將第一個

dir 提換為 path:/path1/dir2/dir3/my.file.txt${file//dir/path}:將全部

dir 提換為 path:/path1/path2/path3/my.file.txt利用

${ } 還可針對不同的變數狀態賦值(沒設定、空值、非空值):${file-my.file.txt}

:假如 $file 沒有設定,則使用 my.file.txt

作傳回值。(空值及非空值時不作處理)${file:-my.file.txt}

:假如 $file 沒有設定或為空值,則使用 my.file.txt 作傳回值。

(非空值時不作處理)${file+my.file.txt}

:假如 $file 設為空值或非空值,均使用 my.file.txt

作傳回值。(沒設定時不作處理)${file:+my.file.txt}

:若 $file 為非空值,則使用 my.file.txt 作傳回值。

(沒設定及空值時不作處理)${file=my.file.txt}

:若 $file 沒設定,則使用 my.file.txt 作傳回值,同時將 $file 賦值為 my.file.txt 。

(空值及非空值時不作處理)${file:=my.file.txt}

:若 $file 沒設定或為空值,則使用 my.file.txt 作傳回值,同時將 $file 賦值為 my.file.txt 。

(非空值時不作處理)${file?my.file.txt}

:若 $file 沒設定,則將 my.file.txt 輸出至 STDERR。

(空值及非空值時不作處理)${file:?my.file.txt}

:若 $file 沒設定或為空值,則將 my.file.txt 輸出至 STDERR。

(非空值時不作處理)tips:以上的理解在於,

你一定要分清楚 unset 與 null 及 non-null 這三種賦值狀態.一般而言,

: 與 null 有關, 若不帶 : 的話, null 不受影響, 若帶 : 則連 null

也受影響.還有哦,${#var}

可計算出變量值的長度:${#file}

可得到 27 ,因為 /dir1/dir2/dir3/my.file.txt 剛好是 27

個字節...

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值