【问题标题】:bash shell pass variable and quotesbash shell 传递变量和引号
【发布时间】:2016-08-12 08:30:53
【问题描述】:

我有一个变量,它包含所有类型的字符

myvar="alfanum;001String"

我需要以这种方式将它们传递给带有单引号的命令

java -jar myapp.jar  HERE I NEED TO PUT ->  'alfanum;001String' with single quotes

如果我这样做了

java -jar myapp.jar "'$myvar'"  

它不起作用。

注意我不能只使用双引号:

java -jar myapp.jar "$myvar" 

因为$myvar 是用户的输入,myapp.jar 需要用单引号对其进行取整

谢谢

【问题讨论】:

  • 相当相关:Expansion of variable inside single quotes in a command in bash shell script。所以像java -jar myapp.jar ''"$var"'' 这样的东西应该做
  • 您的第一个带有"'$myvar'" 的代码应该可以工作。
  • 不幸的是没有,否则我不会打开这个问题:)
  • 什么不起作用,什么是错误?
  • 如果 参数 需要包含单引号,则提供正确数据是调用者的责任,而不是您的责任。如果您不使用myvar,正确的调用是java -jar myapp.jar 'alfanum;001String' 还是java -jar myapp.jar "'alfanum;001String'"?

标签: bash variables quotes


【解决方案1】:

您可以将几种引号类型混合在一起以形成单引号中的字符串:

"'""$myvar""'" 将扩展为 'alfanum;001String'。不过,您可能只需要"$myvar"。

【讨论】:

    【解决方案2】:

    你可以这样做

    java --jar myapp.jar $(echo "'$myvar'")
    

    但是为什么不直接使用双引号呢?

    【讨论】:

    • 命令替换需要加引号,但是在bash中,这个和java -jar myapp.jar "'$myvar'"完全一样。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-08
    • 2012-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多