以下代码(不完全正确的代码)是用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
谢谢
答案 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
可能未设置,如果Ipath
和NULL
都为空,则您的版本甚至可以正常运行。然而,这会掩盖这里的目的。
请阅读bash编程的一些介绍,如下所示: