在shell脚本中使用(if ,, then ,,, if)

时间:2015-03-12 17:53:59

标签: bash shell

以下代码(不完全正确的代码)是用c ++语言编写的。 我试图用bash脚本重写它。

所以,如果有人可以为我写,请帮助..

if ( Ipath == null )(
   if( operation == enc )
     Ipath = in.txt;
   else
     Ipath = in.txt.enc
)

这是迄今为止所写的内容,但我认为这是错误的

if [ "$Ipath" == "$NULL" ]
  then
     if [ "$op" == "enc" ]
        then
            Ipath="in.txt"
     else
            Ipath="input.txt.enc"
     fi
fi 

谢谢

2 个答案:

答案 0 :(得分:0)

做出以下假设

c ++中的

$ NULL == null enc是一个变量

if [ "$Ipath" == "" ]
then
  if [ "$op" == "$enc" ]
  then
    Ipath="in.txt"
  else
    Ipath="input.txt.enc"
  fi
fi

你几乎或已经在那里,你看到了什么错误?如果enc不是变量,则删除$以使其成为字符串。 Null实际上并不存在于bash中,你可能会看到的是一个空字符串,或者你可能需要检查空格。为了确保安全,如果$ NULL是一个变量,我会删除空格然后进行比较。

答案 1 :(得分:0)

如果变量插值的结果为空,则可以检查,如果它为空或者甚至不存在则为真。为此,您可以使用-z的运算符test(您通过括号使用test):

if [ -z "$Ipath" ]
then
    if [ "$op" == "enc" ]
    then
        Ipath="in.txt"
    else
        Ipath="input.txt.enc"
    fi
fi 

我不知道你是如何使用像$NULL这样的东西。 {b}中使用$作为变量前缀。我想你认为它相当于NULL中的c,绝对不是这样。

由于NULL可能未设置,如果IpathNULL都为空,则您的版本甚至可以正常运行。然而,这会掩盖这里的目的。

请阅读bash编程的一些介绍,如下所示:

http://www.tldp.org/LDP/abs/html/