Ⅰ shell的if命令如何判斷一個文件中所含指定字元串
1、字元串判斷
1)str1 = str2當兩個串有相同內容、長度時為真 ;
2)str1 != str2 當串str1和str2不等時為真 ;
3)-n str1 當串的長度大於0時為真(串非空) ;
4)-z str1 當串的長度為0時為真(空串) ;
5)str1 當串str1為非空時為真。
2、數字的判斷
1)int1 -eq int2兩數相等為真;
2)int1 -ne int2兩數不等為真;
3)int1 -gt int2int1大於int2為真;
4)int1 -ge int2int1大於等於int2為真;
5)int1 -lt int2int1小於int2為真;
6)int1 -le int2int1小於等於int2為真。
3、文件的判斷
1)-r file用戶可讀為真;
2)-w file用戶可寫為真;
3)-x file用戶可執行為真;
4)-f file文件為正規文件為真;
5)-d file文件為目錄為真;
6)-c file文件為字元特殊文件為真;
7)-b file文件為塊特殊文件為真;
8)-s file文件大小非0時為真;
9)-t file當文件描述符(默認為1)指定的設備為終端時為真。
Ⅱ linux bash/sh/shell編程中的if語句應該怎麼寫
line="#abcmatch
BCD"
REGEXP="^[#]"
#
變數賦值不需要前綴$
if
[[
$line
=~
$REGEXP
]]
&&
[[
$line
!=
''
]];
then
#粗心
[[
]]
要配對使用
你寫成了
[[
]
[
]]
true
#shell
不能使用空的if
結構,至少要有一個命令。
可以使用true命令
。
echo
yes
else
echo
NO
fi
###
end
另外Bash
不支持完全的正則表達式。[[
「$line」
=~
「$REGEXP」
]]
不能達到你想要的效果。
需要使用echo
"$string"|
grep
-qP
/regexp/
Zsh
支持完整的正則表達式,
[[
「$line」
=~
「$REGEXP」
]]
能達到你想要的效果。
Ⅲ shell腳本中的if中多條件語句如何寫。
可以使用 if-elif-else 語法來寫多條件語句。
1、首先要理解if-else的基本用法,if條件+then操作+else操作+fi閉合,書寫方法如下:
2、 shell語法中[[ ]]和[ ]的主要區別
(1) [ ] 實際上是bash 中 test 命令的簡寫。即所有的 [ expr ] 等於 test expr。
對 test 命令來說, 用 -eq 要進行數字比較,而你此時傳入字元串,就報錯了。
(2) [[ ]] 是內置在shell中的一個命令,它比test強大的多。支持字元模昌咐串的模式匹配(使用=~操作符時甚至支持shell的正則表達式)。邏輯組合可以不使用test的-a,-o而使用&& ||。
Ⅳ linux shell if語句中~是什麼意思
if為判斷語句,判斷某個東西是否達到設定的條件。
1,格式為:
if語句格式
if條件
then
Command
else
Command
fi別忘了這個結尾
2,if的三種條件表達式:
ifcommandthen
if函數then命令執行成功,等於返回0(比如grep,找到匹配)執行失敗,返回非0(grep,沒找到匹配)
if[expression_r_r_r]then表達式結果為真,則返回0,if把0值引向then
iftestexpression_r_r_rthen表達式結果為假,則返回非0,if把非0值引向then
Ⅳ shell if 多條件判斷
#其中mkdir外面陪晌的符號是esc下來那個按鍵上的符號,表示執行命令
#!/bin/bash
if[`mkdir-p~/1/1`-a`mkdir~/2`];then
echo"成立{$?}"
else
echo兄春"不成立羨亂耐{$?}"
fi
Ⅵ shell 腳本 if 的用法小問題
1. 執行shell腳本的時候加上 -x ,執行腳本時會把過程列出來!(有利於我這種新手學習)sh -x shell (./shell 也可以執行shell腳本 但是沒有-x參數)2. 傳的值的個數大於 read 定義的接受變數的時候會把多戚兆碼余的值都給最後一個變數!!3. expr 對整數型變數進行運算 如果運算結果不是整數小數點後面的全部省去 (乘號要用轉意字元'/') .4. 在shell腳本裡面 執行一條輸出的命令(pgrep mysqld)怎麼吧輸出的結果作為值賦給變數?web=$(/usr/bin/pgrep mysqld) #可以用 變數=$(命令) 和 變數=`命令` 來吧命令執行的結果賦給變數
if [ $web = ]
then
/etc/init.d/mysql start
fi
5.查看某個命令所在的位置可以用 whereis /which/type 三個命令來查看6.awk命令的應用作用:分段提取! (一行為單位來進猜信行分段)awk -F [分隔符] '條件 動作' /對象例: awk -F : '$3==0 {print $1}' /高哪etc/passwd例: awk -F : '$1 == root {print $1} ' /etc/passwd# -F : 用:分割passwd每行的內容 ($1 指第一段內容 $2 指第二段內容$n 指第n段內容)# ' 匹配 動作' 單引號裡面寫的是 匹配命令和列印動作 匹配$3==0 第三段等於0 列印{print $1} 列印第一段內容 ($3 == 0 匹配出行 在列印出這些行的第一段內容 )