① 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
没测试 可能有点小错误 大概是这个样子的