當前位置:首頁 » 網頁前端 » shell腳本if
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

shell腳本if

發布時間: 2022-01-30 17:31:07

1. 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而使用&& ||。

2. 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 匹配出行 在列印出這些行的第一段內容 )

3. shell腳本 if判斷條件問題

你既然已經知道這個文件叫什麼就沒有意義了。。。。理論上應該用find命令或者你知道這個目錄在系統中的什麼位置。
比如
ls | grep aaa
a=`echo $?`
b=`ls | grep aaa`
if [ $a -eq 0 ]
then
tar zcvf Name.tar.gz $b
else
echo 'Don't have this file.'
fi

4. 關於shell 中的if 邏輯表達式。

if expression
then
commands
fi
這是if其中的一種結構,在結構中就能看到if 後面接的是什麼。
這個後邊描述的是你想要干什麼,根據你的需要去描述出來然後進行下一步的操作
這個並不是固定的。你還是看書吧。。書上寫的比這里回答的人描述的詳細。
if和then的語法 如果if和then處在同一行 中間需要用;隔開,如果不在同一行可以不用寫
if grep "file " /tmp/tmp.txt ;then 這屬於語法格式,這個是固定的。其實一行內多個命令之間都需要用;號隔開。如果不在同一行就不用考慮。就像你在終端輸入命令一樣,一行一個命令。一行多跳命令需要用;隔開。。也是這個道理。至於!取反。。!屬於操作符 舉個例子來說 $A = $B 如果結果匹配 執行 then 不匹配執行else $A != $B !=就是不等 !進行取反操作 如果判斷結果匹配 執行then 不匹配執行eslse
哇。。說了好多廢話。。我還是強烈建議你仔細看書。。
______________________________________________
1)我還是建議你看書,而且是看對書,我說的這些都是書上有的。
關於[]你不應該理解成test語法才需要 test就是[] []就是test
拋開if不講 test也可以單獨使用 比如test xxx 寫成 [xxxx]意思是一樣的。
至於里邊加的參數,就涉及到你的需求 要干什麼 要判斷字串?整數?表達式?文件?
跟用test 還是用 []並沒有太大關系 舉個例子 test $? -le 0 和 [ $? -le 0] 意思是一樣的

2)要解釋if ! grep "file" /tmp/tmp.txt ; then 首先你要明白系統所設置的操作符。比如= 比如+、-、*、/、這些都是操作符,至於! 屬於位操作符, 我下班了。有空聊

5. 在SHELL腳本里看到 if [ $# -lt 7 ]; then ,請高手詳細解釋

$#取得shell腳本參數個數,

-lt即lessthan,小於,

$0取得腳本名稱(包含路徑)

若判斷參數個數小於7個,則用echo列印正確的使用方法,並用exit退出腳本。

Usage:腳本名稱subjectanalysis_diranat_nameanat_dir_namesanlm_denoisednum_scansgcut

後面分別是7個參數。

其實,通常用`basename$0`來去除路徑得到純粹的腳本名,並且在退出腳本時將返回狀態置為非0。

if[$#-lt7];
then
echo-e" Usage:`basename$0`subjectanalysis_diranat_nameanat_dir_namesanlm_denoisednum_scansgcut "
exit1
fi

6. shell腳本if循環問題

剛看到,這么寫可以實現,代碼在linux上測過了:
#!/bin/bash
arr=(10 11 30)
for a in ${arr[*]}
do
ouput_s=$((ouput_s+a))
sum=$((sum+1))
done
echo "$ouput_s"
echo "$sum"

輸出:
51
3

7. 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

8. 在linux下shell腳本中if中用到or怎麼寫

linux下shell腳本的邏輯的or用運算符 || 表示,if中用到or的寫法實例如下:

a=10

b=20

if[[$a-lt 50||$b-gt 50]]

then

echo"返回 true"

else

echo"返回 false"

fi

其中$a-lt100表示a<50 為真;$b-gt 50 表示b>50為假;真 or 假為真。

所以輸出結果為:返回 true


(8)shell腳本if擴展閱讀

1、shell中流程式控制制if基本語法介紹:

if condition

then

command1

command2 ...

commandN

fi


2、shell中的另一個邏輯運算符and (&&)用法實例介紹:

a=10

b=20

if[[$a-lt100&&$b-gt100]]

then

echo"返回 true"

else

echo"返回 false"

fi

輸出結果為:返回 false

9. shell腳本的if

_day=`echo `cal $_month $_year`|awk 』{print $NF}』`

這一句嵌套`符號有問題。不信你把這句注釋掉看看是不是就沒問題了。
兩兩匹配的原則是就近匹配,即這句會拆分為下面三段:
`echo `
cal $_month $_year
`|awk 』{print $NF}』`
這顯然不是你預期的。

建議:
1)在需要多層嵌套的情況下,最好不要用``,用它的替代品$()。
2)多層嵌套一定要用``的話,裡面的`要用反斜杠作跳脫處理(寫成\`)。
建議你去看《shell十三問》,搜索一下就能找到,上面專門有寫這個。

兩種修改方法分別為:
1) _day=$(echo $(cal $_month $_year)|awk '{print $NF}')
2) _day=`echo \`cal $_month $_year\`|awk '{print $NF}'`

10. shell腳本中 if 判斷時候-s是什麼意思

指的是文件大小非0時為真。