shell腳本ifelse
Ⅰ shell腳本, if語句必須要有else嗎
不必須,可以直接
if 【條件】
【要做的內容】
fi;
這樣就可以了。也可以用else
if 【條件1】
【要做的內容1】
else if 【條件2】
【要做的內容2】
fi;
Ⅱ Python shell中if else的寫法問題
因為沒有拿到源代碼,初步判斷基本是沒有問題,可以從以下幾個方面檢查:
檢查冒號,括弧等等,是否為英文狀態下的;
所有的縮進用tab來做,不要用空格;
代碼路徑中有中文的地方,把中文改成英文;
Ⅲ Shell awk命令嵌套if...elif... else寫法
awk '
{
if ($1==1)
print "A"
else if ($1==2)
print "B"
else
print "C"
}'
#命名為1.sh
執行方法:echo "1" | sh 1.sh
寫成一行:
echo "3" | awk '{if ($1==1) print "A"; else if ($1==2) print "B"; else print "C"}'
Ⅳ shell編程,if,else之後怎麼執行多條語句只能用&&
#!/bin/bash
TODAY=$(date +"%d")
if [ $TODAY == 01 ]; then
echo $(date +"%Y-%m-%d %H:%M:%S.%N" | cut -b 1-23) "full backup 01. "
echo $(date +"%Y-%m-%d %H:%M:%S.%N" | cut -b 1-23) "fffffff. "
echo $(date +"%Y-%m-%d %H:%M:%S.%N" | cut -b 1-23) "ddddddd. "
echo $(date +"%Y-%m-%d %H:%M:%S.%N" | cut -b 1-23) "f123456 "
elif [ $TODAY == 15 ];then
echo $(date +"%Y-%m-%d %H:%M:%S.%N" | cut -b 1-23) "full backup 15. "
tar Jcf /opt/$(date +"%Y%m%d").tar.xz /tmp/*
else
echo '111111111'
fi
Ⅳ Shell 中 if 語句的使用
Shell 的 if 語法 和 C 語言等高級語言非常相似,唯一需要注意的地方就是 Shell 的 if 語句對 空格 方面的要求比較嚴格( 其實 Shell 對所有語法的空格使用都比較嚴格 ),如果在需要空格的地方沒有打上空格,都會報錯。如: if [ $1 == "ip" ];then echo "abc"; fi 中少了一個空格都會報錯。另外 Shell 的 if 語句必須以 fi 作為結尾,不然同樣會報錯。
有 else 和 elif 時也一樣,需要注意空格問題,下面這個例子可以作為參考
介紹完 if 語句的基本語法後,if 還有一個值得我們注意的地方,那就是"對比"。在 C 語言等高級語言中,不管是對比字元串,還是對比整型、浮點數等等數據類型,都是使用 ==、<= 等等對比運算符就可以完成。但是在 Shell 中對比字元串和對比數字,卻是要分開兩種方式。
對比字元串只能使用 ==、<、>、!=、-z、-n 。對比字元串時,末尾一定要加上 x(或者a、b等)一個字元,因為 if [ 1 是"",這個語句會翻譯成 if [ == "ab" ] ,左邊相當於沒有東西了,會報語法錯誤。或者使用 [[ ]] ,就不需要 x 了。使用 < 或者 > 時,如果是用 [ ],需要用轉義符 "",如 >。
對比數字既能使用 -eq、-ne、-gt、-lt、-le ,也能使用 ==、<、>、!= 。其中 -eq 的意思是 equal,-ne 是 unequal,-gt 是 greater than,-ge 是 greater than or equal to,-lt 是 less than,-le 是 less than or equal to 。
if 在對比時可以使用正則表達式,如: if [[ $1 == a*a ]] (或者 if [ $1x == a*ax) 。如果使用 "" 把 a a 包圍起來, 就會變成字元 * ,而不是正則表達式的 *。
區別一:
在 [ 中使用邏輯運算符,需要使用 -a(and)或者 -o(or)。
在 [[ 中使用邏輯運算符,需要使用 && 或者 ||。
區別二:
[ 是 Shell 命令,它包圍的表達式是它的命令行參數,所以字元串比較符 > 和 < 需要轉義,否則就變成 io 重定向了。
[[ 是 Shell 關鍵字,不會做命令擴展,所以 < 和 > 不需要進行轉義。但是語法相對嚴格,如在 [ 中可以用引號括起操作符,[[ 則不行。如: if [ "-z" "ab" ] 。
區別三:
[[ 可以做算術擴展,[ 則不行。如:```if [[ 11 + 1 -eq 100 ]]''',而 '''if [ 11 + 1 -eq 100 ]''' 則會報錯。
在高級語言中,判斷文件是否存在等各種狀態都是需要調用特定的函數進行判斷。而在 Shell 中,這方面就比較方便些,只需要運算符即可。
常用的文件判斷運算符如下:
原文: https://www.cnblogs.com/matthewma/p/6995479.html
Ⅵ 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而使用&& ||。
Ⅶ shell if 多個else怎樣寫
if
elif
elif
else
fi
Ⅷ shell if else 判斷兩數相等
if [$x -eq $y]
------------if [ $x -eq $y ] ----------[] 兩邊都要有空格
echo "input two number:"
read x
read y
if [ $x -eq $y ]
then
echo "equal!"
else
echo "not equal"
fi
Ⅸ shell的awk中用if..else,怎麼多條件嵌套
else和if之間要有個空格
Ⅹ shell腳本if then else的問題
問題出在echo("true")或者echo("false")這一句,ftp裡面不支持,你手動執行一下就知道了。
ftp>echo("true")
?Invalidcommand
ftp>help
Commandsmaybeabbreviated.Commandsare:
! debug mdir sendport site
$ dir mget put size
account disconnect mkdir pwd status
append exit mls quit struct
ascii form mode quote system
bell get modtime recv sunique
binary glob mput reget tenex
bye hash newer rstatus tick
case help nmap rhelp trace
cd idle nlist rename type
cp image ntrans reset user
chmod lcd open restart umask
close ls prompt rmdir verbose
cr macdef passive runique ?
delete mdelete proxy send