$ (()) $(()) expr bc bc -l
浮點運算:yum install bc -y
[root@miwifi-r3-srv ~]# echo 'scale=2;1/3'|bc -l
.33
測試檔案狀態
-d 目錄
-s 檔案長度 > 0、非空
-f 正規檔案
-w 可寫
-r 可讀
-x 可執行
-l 符號連線
-u 檔案有 suid 位設定
字串測試
= 兩個字串相等
!= 兩個字串不相等
-z 空串
-n 非空串
[root@miwifi-r3
-srv ~]
# var1='abc'
[root@miwifi-r3
-srv ~]
# var2='123'
[root@miwifi-r3
-srv ~]# [
$var1
==$var2
][root@miwifi-r3
-srv ~]
# echo $?
1
測試數值
-eq 等於
-ne 不等於
-gt 大於
-lt 小於
-ge 大於等於
-le 小於等於
[root@miwifi-r3-srv ~]# [ 10000 -gt 250 ] #不要使用大於號小於號等於號等,要使用man test中規定的,詳見下一小節4拓展
[root@miwifi-r3-srv ~]# echo $?
0
拓展測試符號 [[ ]] (())
數字測試符號
# [ 10 < 2 ] # 語法錯誤
-bash: 2: 沒有那個檔案或目錄
# # [[ 2 > 10 ]] # 結果錯誤
# echo $?
0# [[ 20 > 10 ]] # 正確
# echo $?
0# (( 10 < 20 ))
# echo $?
0字元測試
# [ "aa" = "aa" ]
# echo $?
0# [[ "aa" = "aa" ]]
# echo $?
0# (( "aa" = "aa" )) #結果錯誤
# echo $?
1混合測試
# [ a = a -a 10 < 20 ]
-bash: 20: 沒有那個檔案或目錄
[root@seker ~]# [[ a = a -a 10 < 20 ]]
-bash: syntax error
in conditional expression
-bash: syntax error near `-a'
[root@seker ~]# [[ a = a && 10 < 20 ]]
[root@seker ~]# echo $?
0[root@seker ~]# [[ a = a || 10 < 20 ]]
[root@seker ~]# echo $?
0[root@seker ~]# (( a = a || 10 < 20 ))
[root@seker ~]# echo $?
0[root@seker ~]# (( a = a && 10 < 20 ))
[root@seker ~]# echo $?
0[root@seker ~]#
結論:
比較數字,使用(( ))
其他測試使用 [[ ]]
包含數字比較的混合測試,使用[[ expr1 && expr2 ]] (( expr1 || expr2 ))
兩個檔案的比較
file1 -ef file2
測試兩個檔案是否是相同的inode
有時為了找到同乙個inode號的檔案 更傾向於使用 find 命令的 -inum 或 --samefile
file1 -nt file2
file1 is newer (modification date) than file2
file1 -ot file2
file1 is older than file2
Linux筆記12 Shell基礎
histroy 歷史命令一般存放在 bash histroy檔案中,根據執行這個命令使用不同的引數,對此檔案的內容可以寫入或是清空。歷史命令缺省會儲存1000條,這個配置可以在環境變數 etc profile配置檔案中進行修改。tab鍵 按tab鍵進行命令或檔名補全。別名 alias,可以給乙個命令...
1 2 shell的變數功能
首先給出變數的定義 變數是指沒有固定的值,可以改變的數。變數以非數字的符號來表達,一般用拉丁字母。變數的設定需要使用 等號左邊為變數名稱,右邊為變數內容,變數的定義遵循以下規則 等號兩邊不能直接使用空格,如下所示為錯誤 haoqiqi localhost myname haoqiqi bash my...
12 shell 字串處理
tips 在上面替換結構中string不一定是常值的,可用另外乙個變數的值或是一種命令的輸出。是去掉左邊 在鍵盤上 在 之左邊 是去掉右邊 在鍵盤上 在 之右邊 和 中的單一符號是最小匹配,兩個相同符號是最大匹配。tips 這四種模式中都不會改變 variable 的值,其中,只有在pattern中...