常用shell變量內容的操作

#!/bin/bash
echo "---------變量內容的截取-----------"
path=/home/pikaqiu/bin:/home/pikaqiu/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

# 示例1 刪除包含第一個:左邊的字符串
echo -n "output1: "
echo ${path#*:}

# 示例2 只保留/snap/bin
echo -n "output2: "
echo ${path##*:}

# 示例3 刪除最後一個:及其右邊的字符串
echo -n "output3: "
echo ${path%:*}

# 示例4 只保留/home/pikaqiu/bin
echo -n "output4: "
echo ${path%%:*}

# 總結:
# ------------- #  從左往右,刪除第一個匹配到的字符串及其左側的所有字符
#-------------- ## 從左往右,刪除最後匹配到的字符串及其左側的所有字符
#-------------- %  從右往左,刪除第一個匹配到的字符串及其右側的所有字符
#-------------- %% 從右往左,刪除最後匹配到的字符串及其右側的所有字符

# 簡單記憶:
# #左往右刪,%右往左刪,符號越多,要求儘可能地多刪。

echo "========變量部分內容取代功能============="
# 還是以我們的path來舉例
# 示例5 從左到右,替換遇到的第一個bin爲大寫BIN
echo -n "output5: "
echo ${path/bin/BIN}

# 示例6 替換所有的bin爲大寫BIN
echo -n "output6: "
echo ${path//bin/BIN}

echo "========變量內容的整體替換功能============"
# 示例7 -的用法
username=""
echo "username=$username"            # username爲空字符串
username=${username-root}            # 表示只要有值不管是否爲空,則值不變
echo -n "output7.1: "
echo "username=$username"

unset username						# 取消username的定義
username=${username-root}
echo -n "output7.2: "
echo "username=$username"

# 示例8 :-的用法
# 如果username不存在或者爲空字符串,都直接替換:-後的內容
username=""
username=${username:-root}
echo -n "output8.1: "
echo "username=$username"

unset username						# 取消username的定義
username=${username-root}
echo -n "output8.2: "
echo "username=$username"

 

輸出信息如下:
---------變量內容的截取-----------
output1: /home/pikaqiu/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
output2: /snap/bin
output3: /home/pikaqiu/bin:/home/pikaqiu/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
output4: /home/pikaqiu/bin
========變量部分內容取代功能=============
output5: /home/pikaqiu/BIN:/home/pikaqiu/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
output6: /home/pikaqiu/BIN:/home/pikaqiu/.local/BIN:/usr/local/sBIN:/usr/local/BIN:/usr/sBIN:/usr/BIN:/sBIN:/BIN:/usr/games:/usr/local/games:/snap/BIN
========變量內容的整體替換功能============
username=
output7.1: username=
output7.2: username=root
output8.1: username=root
output8.2: username=root

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章