当前位置:  技术问答>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, 这个字符串变量应该如何定义和取值呢?

|
#!/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.

再解释下为什么要看test的状态码?
if 后跟的就是test条件 见:http://ss64.com/bash/if.html

test帮助手册: man test; 详细文档:info coreutils 'test invocation'
另外关于比较运算符= 可以看 man expr; 详细文档: info coreutils 'expr invocation'

=有两个上下文,一个赋值,一个比较运算符,不同的上下文有区别,不要混淆了

|


bash到java跨度不小

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux(redhat9)中在哪里设环境变量,.bash_profil在哪里啊?
  • 请问root的bash的环境变量放在哪个文件中啊?
  • 有没有方法可以使用脚本批量修改bash环境变量
  • 脚本能修改bash的环境变量吗
  • bash脚本的问题,为何循环体中不能修改变量的值?
  • 请教一下, .bash_profile文件里面的环境变量没有生效
  • mac os 下环境变量 .profile .bash_profile .bashrc的两个问题
  • Bash的特殊变量 @ 和 * 有什么区别没有?
  • bash中使用echo和read分割变量,分割结果居然每个变量都是空
  • bash 循环中变量作用范围的问题分析
  • linux中环境变量的设置问题(BASH_PROFILE)
  • 请问我编译c++文件的时候需要设定系统变量,设定是在root用户的.bash_profile文件中写的,怎么使该设定生效?
  • 请问,我在linux下用vi /home/liu/.bash_profile来添加环境变量...提个菜问题。
  • 请问怎么用JAVA读取LINUX内存中的环境变量,不是读.bash_profile,谢谢!
  • bash环境变量配置文件
  • ksh和bash 函数变量作用域的问题
  • linux bash shell命令:grep文本搜索工具简介
  • . ./.bash_file 与 ./.bash_file的区别?
  • linux bash shell命令:文本搜索工具grep中用于egrep和 grep -E的元字符扩展集
  • 为什么每次启动bash都出现bash:test:a:binary operaotr expected
  • 如何在redhat下安装bash? iis7站长之家
  • linux RHEL 5.6 在root用户下. .bash_profile 或source .bash_profile 报错
  • linux bash shell命令:文本搜索工具grep正则表达式元字符集(基本集)
  • Ubuntu中如何配置shell(bash)的环境
  • 如何在ubunt下面安装两个bash
  • bash 不能使用括号,求助
  • 如何在redhat下安装bash?
  • bash和Korn shell学哪个比较好
  • BASH Debugger
  • .bashrc和.bash_profile有什么区别
  • . /root/.bash_profile


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,