① shell else 空 怎麼寫
不寫else 直接end
② shell需要注意的問題
1. 寫shell腳本的時候如果查不出錯誤,就留意下空格的問題,這個很嚴重,很坑!!!
2. 在將外部文件內容拷進linux文件,且用vi編輯器打開時,要先按i,可以插入了在粘貼。如果直接粘貼,會丟失部分數據,切記!!
3. 報錯信息:0403-057 Syntax error at line 9 : `else' is not expected.
解決辦法:if判斷的後面必須要有"; then"
4. 報錯信息: test: 0403-004 Specify a parameter with this command.
解決辦法: ${exist}變數應該變成"${exist}"
為保險起見,變數這樣寫更好,"${exist}"
③ shell腳本第一行不能有空格
在shell腳本中如果有空格的處理如下:
sh test.sh "hello word"
echo $1 得到的是hello,而不是hello word.
正確的寫法如下:
vi test.sh
#!/bin/bash
source /etc/profile
echo "$1"
echo "$2"
echo "$3"
exit 0
測試:
sh test.sh "hello word" "ni hao a" "how are you"
輸出:
hello word
ni hao a
how are you
注意:
傳遞參數時要加上雙引號,即是變數引用也要加上參數。 如: sh "ni hao " ; sh "$STR_WITH_SPACE"
腳本中取參數時也要用雙引號: "$1",
④ shell腳本怎麼判斷變數或參數是否為空
1.判斷變數
復制代碼代碼如下:
read -p "input a word :" word
if [ ! -n "$word" ] ;then
echo "you have not input a word!"
else
echo "the word you input is $word"
fi
2.判斷輸入參數
復制代碼代碼如下:
#!/bin/bash
if [ ! -n "$1" ] ;then
echo "you have not input a word!"
else
echo "the word you input is $1"
fi
以下未驗證。
3. 直接通過變數判斷
如下所示:得到的結果為: IS NULL
復制代碼代碼如下:
#!/bin/sh
para1=
if [ ! $para1 ]; then
echo "IS NULL"
else
echo "NOT NULL"
fi
4. 使用test判斷
得到的結果就是: dmin is not set!
復制代碼代碼如下:
#!/bin/sh
dmin=
if test -z "$dmin"
then
echo "dmin is not set!"
else
echo "dmin is set !"
fi
5. 使用""判斷
復制代碼代碼如下:
#!/bin/sh
dmin=
if [ "$dmin" = "" ]
then
echo "dmin is not set!"
else
echo "dmin is set !"
fi
⑤ 在shell中如何判斷一個變數是否為空
value=${value:=0}
if [ $value != 0 ];then
echo "不為空"
else
echo "為空"
fi
⑥ 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
⑦ 求shell腳本請用戶輸入值,為空請繼續輸入,一直3次為空就退出
思路就不用說了,太簡單了,看下程序體吧。
#!/bin/bash
echo -n "請輸入一個字元:"
read input1
if [ -z $input1 ]
then
echo -n "無效輸入,請重新輸入:"
read input2
if [ -z $input2 ]
then
echo "無效輸入,退出。"
else
echo "輸出結果:$input2"
fi
else
echo "輸出結果:$input1"
fi
⑧ shell腳本輸入目錄,檢測非空,進行循環
寫個大概吧
#!/bin/bash
while ;
do
read -p "請輸入你要查詢的目錄,注意需要用絕對路徑" a
if [ -d ${a} ]
then echo 「目錄存在"
num= `ll -a $a | wc -l` %> /dev/null
if [ ${num} -eq 0 ]
then echo "目錄為空"
esle read -p "目錄非空,是否清空目錄,清空請按y,不清空按n" b
if [ "${b}" == "y" ]
then rm -rf ${a}\/*
fi
fi
else echo "目錄不存在"
fi
done
沒測試 可能有點小錯誤 大概是這個樣子的