linux實在太博大精深惹,越是基本的東西越是重要,之前一直看不懂變數的一些用法,但是最近有需要瞭解!花了點時間 濃縮一下鳥哥的文件內容,方便之後查閱
1. 變數測試與內容替換: 在血程式的時候還蠻常遇到變數需要替換,或是側是該變數是否存在,以前最常用的大概是 if(var == null)之類的敘述,結果在寫shell script的時候突然不知所措QQ 以下talbe中可以看到有的有加":"有的沒有,":"的意思代表為被設置或是空字串 表格代表str有三種情境:
- str沒有設定
- str為空字串
- 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=DEFAULT var=DEFAULT |
str no change var= |
str no change var=$str |
如果str沒宣告 var=DEFAULT |
var=${str:=DEFAULT} | str=DEFAULT var=DEFAULT |
str=DEFAULT var=DEFAULT |
str no change var=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]}
沒有留言:
張貼留言