当前位置: 技术问答>linux和unix
bash字符串变量命令中取值问题
来源: 互联网 发布时间:2017-05-05
本文导语: 我想定义一个java运行参数, 按条件能够设置,类似 if a=1;then para = "" else para = "-Dlog.file=/file.log" /usr/java $para 结果运行说不认识para, 这个字符串变量应该如何定义和取值呢? | #!/bin/ba...
我想定义一个java运行参数, 按条件能够设置,类似
if a=1;then
para = ""
else
para = "-Dlog.file=/file.log"
/usr/java $para
结果运行说不认识para, 这个字符串变量应该如何定义和取值呢?
if a=1;then
para = ""
else
para = "-Dlog.file=/file.log"
/usr/java $para
结果运行说不认识para, 这个字符串变量应该如何定义和取值呢?
|
#!/bin/bash
a=2
para=
if [ $a == 1 ];then
echo para = $para
else
para=-Dlog.file=/file.log
echo para = $para
fi
/usr/java $para
|
weblogic@z174774C6c16g120gs11-1:~/Oracle/Middleware/app_packages> cat test.sh
a=2
if [ $a -eq 2 ];then
para="nihao"
else
para="haha"
fi
echo $para
weblogic@z174774C6c16g120gs11-1:~/Oracle/Middleware/app_packages> sh test.sh
nihao
weblogic@z174774C6c16g120gs11-1:~/Oracle/Middleware/app_packages>
可以直接赋值,=前后不能有空格
|
bash有自己特有的语法
你不能按照自己的想象去写代码
推荐阅读教程《Advanced Bash-Scripting Guide》
你不能按照自己的想象去写代码
推荐阅读教程《Advanced Bash-Scripting Guide》
|
相对应的你没有if语句的结束语fi,不知道这个算不算是个问题?!
|
错误1:if判断中a前没$,表示一个常量
错误2:使用=,前后要有空格
|
使用=,前后不能有空格,空格默认会被处理为分隔符,分隔符后的变量值会当做命令处理的,如不是命令,则会报command not found错误的
|
不好意思,我说的有歧义,我说的“=前后要有空格”指的是if中的=,if中的=作为比较运算符,前后必须要有等号,不然就是恒为真的条件,例如
test 1=2;echo $?。
test返回的状态码:
0 if the expression is true,
1 if the expression is false,
2 if an error occurred.
再解释下为什么要看test的状态码?
if 后跟的就是test条件 见:http://ss64.com/bash/if.html
test帮助手册: man test; 详细文档:info coreutils 'test invocation'
另外关于比较运算符= 可以看 man expr; 详细文档: info coreutils 'expr invocation'
=有两个上下文,一个赋值,一个比较运算符,不同的上下文有区别,不要混淆了
|
bash到java跨度不小