2013年8月16日 星期五

Linux note(1)

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]}

沒有留言:

張貼留言