日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux脚本双引号字符去除,shell命令去除字符串里双引号

發布時間:2023/12/2 linux 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux脚本双引号字符去除,shell命令去除字符串里双引号 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

echo \"refs/changes/84/727284/1\" | sed 's/\"//g'

shell變量內字符替換和變量字符修改

a=12345123

#將${a}里的第一個123替換為321

b=${a/123/321};

echo "echo variable a"

echo $a

echo "echo variable b"

echo $b

a=12345123

#將${a}里的所有123替換為321

b=${a//123/321};

echo "echo variable a"

echo $a

echo "echo variable b"

echo $b

不過,假如你只是看到 ${ } 只能用來定界變量名稱的話,那你就實在太小看bash了 !

為了完整起見,我們這里用了一些例子加以說明 ${ } 的一些特異功能:

假設我們定義了一個變量為:

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/dir}:將第一個 dir 刪除:/1/dir2/dir3/my.file.txt

${file//dir}:刪除所有dir字符:/1/2/3/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 個字節...

將帶有前綴為prefix的參數名打印出來

${!prefix*}

${!prefix@}

下面這個是針對name數組的,打印出來name數組有哪些下標

${!name[@]}

${!name[*]}

可以理解下下面這幾個例子:

獲取字符串長度

[root@cnblogs ~]# testvar="12345"

[root@cnblogs ~]# echo ${#testvar}

5

對變量值進行大小寫轉換

將變量值中的小寫字母裝換為大寫

語法:echo ${var^^}

[root@cnblogs ~]# testvar="case conversion"

[root@cnblogs ~]# echo ${testvar}

case conversion

[root@cnblogs ~]# echo ${testvar^^}

CASE CONVERSION

[root@cnblogs ~]#

將變量值中的大寫字母裝換為小寫

語法:echo ${var,,}

[root@cnblogs ~]# testvar="CASE CONVERSION"

[root@cnblogs ~]# echo ${testvar}

CASE CONVERSION

[root@cnblogs ~]# echo ${testvar,,}

case conversion

[root@cnblogs ~]#

當變量值為空或者非空時操作變量

${var:=value}

上述語法表示如果var為空,則返回value,并將value賦值給var,如果var不為空,則返回var本身的值,var不為空時,var值不會被改變,var為空時,var的值會被設置成指定值。

${var:-value}

上述語法表示如果var為空,則返回value,如果var不為空,則返回var的值,無論var是否為空,var本身的值不會改變。

${var:+value}

上述語法表示如果var不為空,則返回value,如果var為空,則返回空值,無論var是否為空,var本身的值不會改變。

${var:?error_info}

上述語法表示如果var為空,那么在當前終端打印error_info,如果var的值不為空,則返回var的值,無論var是否為空,var本身的值都不會改變。

從指定位置截取字符串,截取到字符串的末尾

#下例表示從正數第4個字符以后開始截取,直到字符串的末尾。

[root@cnblogs ~]# website="www.cnblogs.com"

[root@cnblogs ~]# echo ${website:4}

cnblogs.com

[root@cnblogs ~]#

#下例表示從倒數第4個字符開始截取,直到字符串的末尾

#注意:下例中的"負號"與"冒號"之間必須存在0或者空格

[root@cnblogs ~]# website="www.cnblogs.com"

[root@cnblogs ~]# echo ${website:0-4}

.com

[root@cnblogs ~]# echo ${website: -4}

.com

[root@cnblogs ~]#

從指定位置截取字符串,并且截取指定的長度

#下例表示從正數第4個字符以后開始截取,截取7個字符。

[root@cnblogs ~]# website="www.cnblogs.com"

[root@cnblogs ~]# echo ${website:4:7}

cnblogs

[root@cnblogs ~]#

下例表示從倒數第11個字符開始截取,截取7個字符。

[root@cnblogs ~]# website="www.cnblogs.com"

[root@cnblogs ~]# echo ${website:0-11:7}

cnblogs

[root@cnblogs ~]#

總結

以上是生活随笔為你收集整理的Linux脚本双引号字符去除,shell命令去除字符串里双引号的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。