linux實在太博大精深惹,越是基本的東西越是重要,之前一直看不懂變數的一些用法,但是最近有需要瞭解!花了點時間
濃縮一下鳥哥的文件內容,方便之後查閱
1. 變數測試與內容替換:
在血程式的時候還蠻常遇到變數需要替換,或是側是該變數是否存在,以前最常用的大概是
if(var == null)之類的敘述,結果在寫shell script的時候突然不知所措QQ
以下talbe中可以看到有的有加":"有的沒有,":"的意思代表為被設置或是空字串
表格代表str有三種情境:
表達式 | str沒有設定 | str為空字串 | str非空字串 | 含義 |
var=${str-DEFAULT} |
var=DEFAULT |
var= |
var=$str |
如果str沒有宣告 var=DEFAULT |
var=${str:-OTHER} |
var=DEFAULT |
var=DEFAULT |
var=$str |
如果str沒有宣告或是空字串 var=DEFAULT |
var=${str+OTHER} |
var= |
var=OTHER |
var=OTHER |
如果str有宣告,其值為OTHER,否則為null |
var=${str:+DEFAULT} |
var= |
var= |
var=DEFAULT |
如果str被設置,其值為OTHER,否則為null |
var=${str=DEFAULT} |
str=DEFAULTvar=DEFAULT |
str no changevar= |
str no changevar=$str |
如果str沒宣告 var=DEFAULT |
var=${str:=DEFAULT} |
str=DEFAULTvar=DEFAULT |
str=DEFAULTvar=DEFAULT |
str no changevar=DEFAULT |
如果str沒宣告或為空字串 var=DEFAULT |
var=${str?ERR_MSG} |
var=ERR_MSG輸出至 stderr |
var= |
var=$str |
如果str沒宣告 var=ERR_MSG |
var=${str:?ERR_MSG} |
var=ERR_MSG輸出至 stderr |
var=ERR_MSG輸出至 stderr |
var=$str |
如果str沒宣告或為空字串 var=ERR_MSG |
2. 字符串操作(長度,讀取,替換:
這個部分應該是最常用的部分~~科科(要牢記)
表達式 | 含義 |
${#string} |
$string的長度 |
${string:position} |
從position的地方開始得到substring |
${string:position:length} |
從position的地方開始得到長度lengh的substring |
${string#substring} |
從$string的開頭, 刪除最短匹配$substring的子串 |
${string##substring} |
從$string的開頭, 刪除最長匹配$substring的子串 |
${string%substring} |
從$string的結尾, 刪除最短匹配$substring的子串 |
${string%%substring} |
從$string的結尾, 刪除最長匹配$substring的子串 |
${string/substring/replacement} |
第一個substring會被替換成replacement |
${string//substring/replacement} |
全部substring會被replacement取代 |
3. 萬用字元
符號 | 意義 |
* |
可以代表0到無窮多個任意字元 |
? |
代表一個任意字元(該字元要存在) |
[] |
一定有一個在括號內的字元ex:[abc]代表a or b or c |
[-] |
代表編碼順序內的所有字元ex:[0-9]代表0~9的所有數字 |
[^] |
^代表"非的"意思ex:[^abc]代表只要不是a or b or c都可 |
4. 其他一些處理字串的方法
a. 判斷string中是否有substring
#!/bin/bash
ker="YO~ kerker"
echo $ker | grep YO
flag=$?
if [ $flag == 0 ];then
echo "contain"
else
echo "not contain"
fi
b. 切割字串並取出某一段(cut指令)
echo $PATH | cut -d ':' -f 1
# segment從1開始
# 1|2|3|4|5|
c. 以字元為單位取出某character之後的substring(cut -c)
$ker="Hello World"
echo $ker | cut -c 7-
註:cut的用法與常用參數
cut -d'分隔字元' -f fields
cut -c 字元區間
# 選項與參數:
# -d :後面接分隔字元。與 -f 一起使用;
# -f :依據 -d 的分隔字元將一段訊息分割成為數段,用 -f 取出第幾段的意思;
# -c :以字元 (characters) 的單位取出固定字元區間;
d. 串接字串
str1="Hello "
str2="World"
str3=$str1$str2
e. 動態增加value到array中
array=()
array+=('ker')
array+=('lala')
echo ${array[0]}
echo ${array[1]}
沒有留言:
張貼留言