bash shell传递变量和引号
我有一个变量,它包含所有类型的字符bash shell传递变量和引号,bash,variables,quotes,Bash,Variables,Quotes,我有一个变量,它包含所有类型的字符 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="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需要用单引号取回它
谢谢你你可以这样做
java --jar myapp.jar $(echo "'$myvar'")
但是为什么不使用双引号呢?您可以将几种引号类型混合在一起,形成单引号中的字符串:
““$myvar”“”
将扩展为“alfanum”;001String'
。不过,您可能只需要“$myvar”
。非常相关:。所以像java-jar myapp.jar““$var”
这样的东西应该可以让您的第一个代码使用“$myvar”
工作。不幸的是,不,否则我不会打开这个问题:)什么不工作,什么是错误?如果参数需要包含单引号,则调用者有责任提供正确的数据,而不是您的数据。如果您没有使用myvar
,正确的调用是java-jarmyapp.jar'alfanum;001String'
或java-jar myapp.jar''alfanum;001String'
?需要引用命令替换,但在bash
中,这与java-jar myapp.jar'$myvar'
完全相同。