bash字符串变量命令中取值问题

ladofwind 2013-12-12 10:50:24
我想定义一个java运行参数, 按条件能够设置,类似

if a=1;then
para = ""
else
para = "-Dlog.file=/file.log"

/usr/java $para


结果运行说不认识para, 这个字符串变量应该如何定义和取值呢?
...全文
316 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
姜小白- 2013-12-16
  • 打赏
  • 举报
回复
引用 9 楼 shigang_xing 的回复:
[quote=引用 8 楼 magi1201 的回复:] [quote=引用 7 楼 shigang_xing 的回复:] 错误1:if判断中a前没$,表示一个常量 错误2:使用=,前后要有空格
使用=,前后不能有空格,空格默认会被处理为分隔符,分隔符后的变量值会当做命令处理的,如不是命令,则会报command not found错误的 [/quote] 不好意思,我说的有歧义,我说的“=前后要有空格”指的是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' =有两个上下文,一个赋值,一个比较运算符,不同的上下文有区别,不要混淆了[/quote] 前段时间简单学习了下Shell,最近又做Java开发了, 共同学习
姜小白- 2013-12-16
  • 打赏
  • 举报
回复
引用 11 楼 shigang_xing 的回复:
bash到java跨度不小
我本来就是做java的,对shell感兴趣,就学习了一段时间,偶尔兼职改个shell脚本
shigang_xing 2013-12-16
  • 打赏
  • 举报
回复
引用 10 楼 magi1201 的回复:
[quote=引用 9 楼 shigang_xing 的回复:] [quote=引用 8 楼 magi1201 的回复:] [quote=引用 7 楼 shigang_xing 的回复:] 错误1:if判断中a前没$,表示一个常量 错误2:使用=,前后要有空格
使用=,前后不能有空格,空格默认会被处理为分隔符,分隔符后的变量值会当做命令处理的,如不是命令,则会报command not found错误的 [/quote] 不好意思,我说的有歧义,我说的“=前后要有空格”指的是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' =有两个上下文,一个赋值,一个比较运算符,不同的上下文有区别,不要混淆了[/quote] 前段时间简单学习了下Shell,最近又做Java开发了, 共同学习 [/quote] bash到java跨度不小
shigang_xing 2013-12-16
  • 打赏
  • 举报
回复
引用 8 楼 magi1201 的回复:
[quote=引用 7 楼 shigang_xing 的回复:] 错误1:if判断中a前没$,表示一个常量 错误2:使用=,前后要有空格
使用=,前后不能有空格,空格默认会被处理为分隔符,分隔符后的变量值会当做命令处理的,如不是命令,则会报command not found错误的 [/quote] 不好意思,我说的有歧义,我说的“=前后要有空格”指的是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' =有两个上下文,一个赋值,一个比较运算符,不同的上下文有区别,不要混淆了
姜小白- 2013-12-14
  • 打赏
  • 举报
回复
引用 7 楼 shigang_xing 的回复:
错误1:if判断中a前没$,表示一个常量 错误2:使用=,前后要有空格
使用=,前后不能有空格,空格默认会被处理为分隔符,分隔符后的变量值会当做命令处理的,如不是命令,则会报command not found错误的
shigang_xing 2013-12-14
  • 打赏
  • 举报
回复
引用 楼主 ladofwind 的回复:
我想定义一个java运行参数, 按条件能够设置,类似 if a=1;then para = "" else para = "-Dlog.file=/file.log" /usr/java $para 结果运行说不认识para, 这个字符串变量应该如何定义和取值呢?
错误1:if判断中a前没$,表示一个常量 错误2:使用=,前后要有空格
WO浣熊OW 2013-12-13
  • 打赏
  • 举报
回复
相对应的你没有if语句的结束语fi,不知道这个算不算是个问题?!
ljc007 2013-12-13
  • 打赏
  • 举报
回复
bash有自己特有的语法 你不能按照自己的想象去写代码 推荐阅读教程《Advanced Bash-Scripting Guide》
姜小白- 2013-12-12
  • 打赏
  • 举报
回复

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> 
可以直接赋值,=前后不能有空格
ladofwind 2013-12-12
  • 打赏
  • 举报
回复
引用 2 楼 fengfengdiandia 的回复:
#!/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
不能直接赋值吗?
疯疯癫癫 2013-12-12
  • 打赏
  • 举报
回复
#!/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
ladofwind 2013-12-12
  • 打赏
  • 举报
回复
没人回答吗?
内容概要:本文档聚焦于基于Peng-Robinson状态方程的化工热力学计算研究,系统介绍了利用Matlab代码实现纯组分及多组分系统的压缩因子(z因子)和逸度系数的计算方法,并进一步拓展至泡点压力与露点压力的数值求解。资源涵盖了从状态方程推导、非线性方程求根、相平衡条件判断到迭代算法实现的完整技术路线,提供了可运行的Matlab程序代码,有助于深入理解实际工程物性参数的计算原理与实现过程; 适合人群:具备化工热力学基础知识和一定Matlab编程能力的高校学生、科研人员及工程技术人员,尤其适合从事过程系统模拟、油气田开发、精馏设计及相关领域研究的专业人士; 使用场景及目标:① 掌握Peng-Robinson方程在真实气体物性计算的应用;② 实现多组分混合体系的相平衡计算与泡/露点预测;③ 为Aspen Plus等商用流程模拟软件提供底层算法验证与教学参考;④ 支持科研论文复现、课程设计、毕业设计及工业过程优化的热力学数据支撑需求; 阅读建议:建议读者结合经典化工热力学教材同步学习,重点理解立方型状态方程的根判别、迭代收敛策略与相平衡准则的数学表达,动手调试并运行所提供的Matlab代码以掌握算法细节,还可将其扩展应用于其他状态方程(如SRK、vdW)的对比分析研究。

19,614

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧