Bash,有没有一种方法可以在不使用双引号的情况下获得与双引号引用变量相同的函数
我希望获得与Bash,有没有一种方法可以在不使用双引号的情况下获得与双引号引用变量相同的函数,bash,Bash,我希望获得与vim“$p”相同的效果,但不使用双引号,其中$p是一个带有特殊字符和空格的路径 e、 g.理想的DOUBLE\u QUOTE功能:vim$(DOUBLE\u QUOTE$p) 经过大量研究,我尝试: vim$(echo${p@Q}) …都没有成功(我在路径中看到引号) 背景:原因是字符串是在几个窗口批处理脚本和程序之间传递的,我花了一个周末试图通过多个层转义双引号,但没有成功。完成后 IFS= 你可以用 vim$p 否则,不会 默认值为IFS,bash将在空格、制表符和/
vim“$p”
相同的效果,但不使用双引号,其中$p
是一个带有特殊字符和空格的路径
e、 g.理想的DOUBLE\u QUOTE
功能:vim$(DOUBLE\u QUOTE$p)
经过大量研究,我尝试:
vim$(echo${p@Q})
IFS=
你可以用
vim$p
否则,不会
默认值为
IFS
,bash
将在空格、制表符和/或换行符序列上拆分$p
的值。这样就不可能发送a␠␠b
(中间两个空格)到双引号
,而双引号
将无法区分a␠b从a开始(中间的空格)␉b
(中间的选项卡)
此外,DOUBLE\u QUOTE
返回的值也将进行此拆分
因此,
vim$(双引号$p)
必须是
vim“$(双引号“$p”)”
使用默认值IFS
另一方面,如果您试图生成shell命令,可以查看的答案以获得帮助
比如说,
printf'%s\n'$(引用vim“$p”)”
输出
'vim'a b'
给定
p='ab'
及
#quote()-创建shell文本
#用法:printf'%s\n'$(引号“…”)
引号(){
本地前缀=“”
局部p
对于“$@”中的p,请执行以下操作
printf“$prefix”\'
printf%s“$p”| sed“s/”/“\\\”“/g”
printf
前缀=“”
完成
}
完成后
IFS=
你可以用
vim$p
否则,不会
默认值为IFS
,bash
将在空格、制表符和/或换行符序列上拆分$p
的值。这样就不可能发送a␠␠b
(中间两个空格)到双引号
,而双引号
将无法区分a␠b从a开始(中间的空格)␉b
(中间的选项卡)
此外,DOUBLE\u QUOTE
返回的值也将进行此拆分
因此,
vim$(双引号$p)
必须是
vim“$(双引号“$p”)”
使用默认值IFS
另一方面,如果您试图生成shell命令,可以查看的答案以获得帮助
比如说,
printf'%s\n'$(引用vim“$p”)”
输出
'vim'a b'
给定
p='ab'
及
#quote()-创建shell文本
#用法:printf'%s\n'$(引号“…”)
引号(){
本地前缀=“”
局部p
对于“$@”中的p,请执行以下操作
printf“$prefix”\'
printf%s“$p”| sed“s/”/“\\\”“/g”
printf
前缀=“”
完成
}
你可以用ln-s“奇怪的东西和空格”创建一个名为it
的符号链接,然后执行vim it
你对脚本做了什么?为什么双引号不能满足您的需求?为什么不使用双引号?如果调用myScript.sh“abc”
,则在sccript中变量$1
的值不带引号。然后,您可以在nextScript.sh“$1”
中将其传递到下一个脚本。询问您的实际问题,而不是您认为该问题的解决方案。如果其中一个特殊字符是#
,您将很难不使用双引号。您可以使用ln-s创建一个名为it
的符号链接“带空格的奇怪东西”将其删除
,然后执行vim it
您对脚本做了什么?为什么双引号不能满足您的需要?为什么不使用双引号?如果您调用myScript.sh“a b c”“
,在脚本中变量$1
的值不带引号。然后你可以在nextScript.sh“$1”
内将其传递到下一个脚本。询问你的实际问题,而不是你认为该问题的解决方案。如果其中一个特殊字符是#
,你将在不使用双引号的情况下度过一段艰难的时光。如果s=成功了,非常感谢!!!我也最终想出了一个“在最后的脚本中出现,我需要发送\\“^”,但是你的方式更干净了。如果s=成功了,非常感谢!!!我也最终想出了一个“在最后的脚本中出现,我需要发送\\“^”,但你的方式更干净。