bash字符串变量命令中取值问题
我想定义一个java运行参数, 按条件能够设置,类似
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》
------解决方案--------------------相对应的你没有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.