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