草庐IT

if-cases

全部标签

linux - bash/sh if 语句语法

在各种指南和脚本中,我发现人们倾向于使用不同的if语句语法。有什么区别,最佳做法是什么?我相信以下所有语句以及更多变体都将返回true:bar="foo"if["foo"="foo"]if[["foo"==$bar]]if["foo"="$bar"]if[["foo"="$bar"]]if[["foo"-eq$bar]] 最佳答案 据我了解=需要字符串-eq需要整数“$bar”用于字面匹配,即z*可以扩展,但“z*”将字面匹配通配符字符。[]和[[]]的区别在于后者没有分词和路径扩展,而前者有。Plus[[]]允许额外的运算符:&&

linux - if 语句的计算结果始终为 TRUE

无论我的进程是启动还是停止,这个脚本总是返回“正在运行”的原因是什么?ifpsax|grep-vgrep|grep"processName">/dev/nullthenecho$"running"elseecho$"notrunning"fi非常感谢更新:我添加了我的脚本的完整示例,也许其他地方有问题。case"$1"instart)#Startdaemons.echo-n$"Startingdaemon:";;stop)#Stopdaemons.echo-n$"Shuttingdown:"echo;;status)pgrep-f"ProcessName">/dev/nullif[$?

linux - Bash/sh 'if else' 语句

我想了解sh脚本中的ifelse语句。所以我写了下面的代码来找出是否在环境中设置了JAVA_HOME。我写了下面的脚本#!/bin/shif[$JAVA_HOME!=""]thenecho$JAVA_HOMEelseecho"NOJAVAHOMESET"fi这是我对env的输出:sh-3.2$envSHELL=/bin/cshTERM=xtermHOST=estilorSSH_CLIENT=10.15.16.28434822SSH_TTY=/dev/pts/18USER=asimonrajGROUP=ccusersHOSTTYPE=x86_64-linuxPATH=/usr/local

linux - Linux 脚本中 if 表达式中的 -z 值是什么意思?

在这个脚本中,我找到了这个if表达式:if[-z$1];thenecho"Usage:createpkg.sh"exitelseCURRENT_VERSION=$1fi我的问题是我找不到这个-z值的确切含义。从回显的内容我可以推断出(也许)$1变量代表软件版本。并且(也许)-z是一个空值。因此,如果我执行脚本而不向它传递我要打包的软件版本,它会向我打印执行脚本的正确过程。但是我不确定-z值的真正含义。 最佳答案 来自mantest:-zSTRINGthelengthofSTRINGiszero所以条件:if[-z$1];then表示

c - Linux : Check if message queue is empty

我想知道队列消息是否为空。我按如下方式使用了msg_ctl()它不起作用:structmsqid_dsbuf;intnum_messages;rc=msgctl(msqid,IPC_STAT,&buf);我用过这个peek函数:intpeek_message(intqid,longtype){intresult,length;if((result=msgrcv(qid,NULL,0,type,IPC_NOWAIT))==-1){if(errno==E2BIG)return(1);}return(0);}在这两种情况下,我在向队列发送消息之前和之后得到相同的结果。消息成功进入队列,我已经

正则表达式在 if 语句中匹配带空格的字符串(使用引号?)

我将如何进行如下所示的正则表达式匹配,但在("^This")周围加上引号,就像在现实世界中一样,"This"将是一个可以包含空格的字符串。#!/bin/bashtext="Thisisjustateststring"if[["$text"=~^This]];thenecho"matched"elseecho"notmatched"fi我想做类似的事情if[["$text"=~"^Thisis"]];then但这不匹配。 最佳答案 您可以在空格前使用\。#!/bin/bashtext="Thisisjustateststring"if

linux - Sed 命令 : how to replace if exists else just insert?

这个问题在这里已经有了答案:Appendingalinetoafileonlyifitdoesnotalreadyexist(23个回答)关闭去年。我需要在一个文件中编辑几行,这样如果一行以(av或avpgw)开头,则将其替换为新文本,否则只需在开头插入新文本。我如何使用sed执行此操作?

linux - linux shell 脚本中的一行 if/else 条件

我想在一行if/else条件中有以下等价物。$maxline=`catjournald.conf|grep"#SystemMaxUse="`if[$maxline=="#SystemMaxUse="]thensed's/\#SystemMaxUse=/SystemMaxUse=50M/g'journald.conf>journald.conf2mvjournald.conf2journald.conf;elseecho"Thisfilehasbeenedited.You'llneedtodoitmanually."fi我试图将其放入单行命令中。到目前为止,除了命令的else部分,我已经

linux - shell脚本中if else语句中的多个语句

我想问的是,当if条件满足时,是否可以给出多个语句来执行if[condition]thenstatementselsestatementsfi或者我们必须做一些其他的事情,比如使用do.....done围绕那个语句block 最佳答案 是的,你可以有多个语句:if[condition];thenecho'foo'echo'bar'elseecho'hello'echo'world'fi 关于linux-shell脚本中ifelse语句中的多个语句,我们在StackOverflow上找到一

php - not null if 语句的最佳实践

我一直在这样写我的“如果这个变量不为空”语句:if($var!=''){//Yup}但我问过这是否正确,这对我没有造成问题。这是我在网上找到的答案:if(!($error==NULL)){///Yup}这实际上看起来比我的方法长,但它更好吗?如果是,为什么? 最佳答案 而不是:if(!($error==NULL))简单地做:if($error)有人会认为第一个更清楚,但实际上更具有误导性。原因如下:$error=null;if(!($error==NULL)){echo'notnull';}这按预期工作。但是,接下来的五个值将具有相