shell編程里的測試test命令基本可以分為3種數據類型,每種都不一樣。個人更傾向于理解為條件語句的寫法規則,就是test加條件加判斷語句。
1 數值類型
? ? 基本可以分為6個判斷:-eq等于,-ne不等于,-gt大于,-lt小于,-ge大于等于,-le小于等于
? ? 實例:a=1;b=2
? ? ? ? ? ? ? ?if test $[a] -eq $[b]? ? #如果a等于b,那就...,-ne,-gt,,等等都可以,另外提一句,要是不是一個算式的話,可以不加方括號,$a + $b
? ? ? ? ? ? ? ?then
? ? ? ? ? ? ? ? ? ?echo "a=b"? ? #縮進4個4個都行,習慣性縮進4個
? ? ? ? ? ? ? ?else
? ? ? ? ? ? ? ? ? ?echo "a!=b"
? ? ps:算式有兩種寫法:$[a + b]和`expr $a + $b`
2 字符串
? ? 有4個判斷:= ,!= , -z (長度為0)和-n(長度不為0)
? ? 實例:astr='hehehehe' ; bstr='hahahaha'
? ? ? ? ? ? if test $astr = $bstr
? ? ? ? ? ? then
? ? ? ? ? ? ? ? echo "astr = bstr"
? ? ? ? ? ? ?else
? ? ? ? ? ? ? ? echo "astr !=bstr"
? ? ? ? ? ? ?fi
3 文件測試
? ? 基本上有9個常用的參數,基本格式是test + 參數 +文件名,參數分別是:
? ? ? ? -e:exists,存在這樣的一個文件;
? ? ? ? -r:readable,文件是可讀的;
? ? ? ? -w:writable,文件的可寫的;
? ? ? ? -x:文件是可執行的,
? ? ? ? -s:存在且不為空
? ? ? ? -d:directory,存在目錄
? ? ? ? -f:file,存在且為普通文件,
? ? ? ? -c:文件存在而且為字符型的特殊文件? ? #這個地方怎么理解呢,可以和ls命令中最前面的一個字符相關聯:‘-’表示文件。d則表示目錄,l表示連接文件,b表示設備文件里面的可供存儲的接口設備,c表示設備文件里面的串行端口設置。https://zhidao.baidu.com/question/1820545103813500748.htm
? ? ? ? ? 實例:
? ? ? ? ? ? ? ? cd /etc
? ? ? ? ? ? ? ? if test -f /etc/passwd? ? ? ? #此處可以結合與或非邏輯語句:形如 if test -e ./notFile -o -e ./bash 表示存在./notFile 或者./bash
? ? ? ? ? ? ? ??then?
? ? ? ? ? ? ? ? ? ? ?echo "yes"
? ? ? ? else?
? ? ? ? ? ?echo "no"
? ? ? ? fi
?
?
? ? ? ? ? ? ? ? ? ?