是否有办法使${VAR}扩展为双引号形式?
这不是我想看到的:

% A="some spaces in there"
% touch ${A}
% ls -1
in
some
spaces
there

当然,我可以使用像"$VAR"这样的典型符号。但是在引用的文本中使用引号等会很麻烦。我想知道是否有一种扩展${…}符号的方法可以将${...}视为"${...}"而不使用双引号本身?

最佳答案

不遵循accepted best practice(并学习贝壳是如何工作的)很可能会咬伤你。反复。带着僵尸病毒感染的尖牙。一些有用的东西:
只要开始引号和结束引号相邻,就可以对单个参数的不同部分使用不同的引号:

$ printf '%q\n' "foo 'bar' baz"'nuu "boo" zoo'
foo\ \'bar\'\ baznuu\ \"boo\"\ zoo

您可以在子shell中设置IFS,以避免弄糟整个脚本:
$ a="some spaces in there"
$ (IFS= && touch ${a})
$ ls -1
some spaces in there

关于linux - bash中变量的空格和花括号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27040682/

10-08 20:35