相关疑难解决方法(0)

什么时候需要双引号?

过去的旧建议是对任何涉及 a 的表达式加双引号$VARIABLE,至少在希望 shell 将其解释为单个项目的情况下,否则,内容中的任何空格$VARIABLE都会脱离 shell。

但是,我知道在较新版本的 shell 中,不再总是需要双引号(至少出于上述目的)。例如,在bash

% FOO='bar baz'
% [ $FOO = 'bar baz' ] && echo OK
bash: [: too many arguments
% [[ $FOO = 'bar baz' ]] && echo OK
OK
% touch 'bar baz'
% ls $FOO
ls: cannot access bar: No such file or directory
ls: cannot access baz: No such file or directory
Run Code Online (Sandbox Code Playgroud)

zsh,而另一方面,同样的三个命令成功。因此,基于此实验,似乎在 中bash可以省略 内部的双引号[[ ... ]],但不能省略内部 …

shell bash zsh shell-script quoting

147
推荐指数
1
解决办法
6万
查看次数

shell 变量的扩展以及 glob 和 split 对其的影响

这篇文章实际上包含两个单独的问题,但我认为将它们组合在一起会提供更多背景信息。我已经通过关于变量的引号解决这个问题,但我不太明白变量扩展的含义。所以我的第一个问题是:

  1. unix/linux 中的变量扩展是什么?

我的问题的第二部分涉及以下术语:

  1. 球体
  2. 分裂

以上是什么意思,它们如何影响变量扩展?原始问题的答案提到以下内容:

将没有引号(在列表上下文中)视为 split+glob 运算符。

好像 echo $test 是 echo glob(split("$test"))。

我找不到直接解决的概念,任何答案通配符分裂,而是使用这些术语直接在回答其他问题,像这样的最近一个

shell shell-script terminology environment-variables quoting

21
推荐指数
2
解决办法
8531
查看次数