shell腳本else
A. shell if else if
if 與elif是同等級的,進入了if分支,elif是不會進入的
B. shell腳本,條件控制語句求助
#!/bin/bash
test_file(){
[ -f $1 ] && echo $1" 文件已存在" || touch $1
}
test_file /home/app/zhu/A.txt
test_file /home/app/zhu/B.doc
C. 小弟初學shell,各位大俠請幫忙看一下啊,下面語句為啥一直走的是else分支
[ ! -n $pid1 ] 寫法錯誤,-n用於判斷字元串是否為空。
對於字元串變數,建議加雙引號,否則會有意想不到的錯誤。
以下幾種寫法都是可以的:
[-z"$pid1"]
[!-n"$pid1"]
[!"$pid1"]
["$pid1"=""]
你完全可以自己簡單測試:
pid1=""
[!-n$pid1]&&echohi#不會列印hi
[!-n"$pid1"]&&echohi#會列印hi
[-z"$pid1"]&&echohi#會列印hi
另外,[ -n "$pid1" ] 中-n可省略,可直接寫為 [ "$pid1" ],參見《鳥哥的Linux私房菜(基礎學習篇)》 shell腳本那一章節。
D. shell中if else怎麼判斷fi個數
統計文件中fi出現的次數嗎?
cat <filename>|grep -c "fi"
或者vi到文件里,非編輯模式下輸入/fi,再逐次按n鍵,檢索fi
E. 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而使用&& ||。
F. 菜鳥請教shell編程問題 case if else
#
# 用一個while loop 直到不想玩了為止
#
while :
do
#
# ask user to enter the 1st number
#
read -p "please input the first number (or 'q' to quit): " first_num
if [ "$first_num" == "q" ]
then
echo "bye!"
exit
else
# check if the input is all digits
re='^[0-9]+$'
if ! [[ $first_num =~ $re ]]
then
echo "first_num is non-numeric, 重來!"
continue
fi
fi
#
# ask user to enter the 2nd number
#
read -p "please input the second number (or 'q' to quit): " second_num
if [ "$second_num" == "q" ]
then
echo "bye!"
exit
else
# check if the input is all digits
re='^[0-9]+$'
if ! [[ $second_num =~ $re ]]
then
echo "second_num is non-numeric, 重來!"
continue
fi
fi
#
# ask user to enter the operator (+,-,*,/)
#
read -p "please enter 運算符號(+,-,*,/): " operator
case $operator
in
'+') let result=$first_num+$second_num
echo "$first_num + $second_num = " $result
;;
'-') # 這些你自己可以做了
;;
'*') # 這些你自己可以做了
;;
'/') # 這些你自己可以做了
;;
*) # anything else is invalid
echo "Invalid operator, please enter '+','-','*','/', try again!"
;;
esac
done
G. 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
H. shell腳本 elseif嗎
有的。可以按照下面的格式來
#!/bin/bash
if[];then
XXX
elif[];then
XXX
else
XXX
fi
I. shell腳本, if語句必須要有else嗎
不必須,可以直接
if 【條件】
【要做的內容】
fi;
這樣就可以了。也可以用else
if 【條件1】
【要做的內容1】
else if 【條件2】
【要做的內容2】
fi;
J. 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