为什么在赋值中包含空格的未加引号的 $PATH 是安全的?

为什么在赋值中包含空格的未加引号的 $PATH 是安全的?

以下内容来自什么https://unix.stackexchange.com/a/154290/674意思是?

一般来说,在 zsh 以外的 shell 中,双引号外的 $PATH 当值包含空格或其他特殊字符时会中断,但是在任务中,这是安全的

你能举一些例子吗?谢谢。

答案1

简单赋值中的变量(例如a=$b)是根据定义(即 POSIX 规范)定义的,通常不需要引用——无论如何,在大多数情况下。这是因为在这些赋值中,“字符串分割”和“通配符”(即空格和通配符,例如*)不会扩展。

在其他情况下,除了赋值之外,变量 ( echo $b)扩展——包括空格(字符串分割)——因此应该用引号引起来(echo "$b"),以防止出现问题,以防它包含空格。例如,考虑一下我是否不使用echo作为示例,而是使用另一个命令:cmd $b如果 中有空格,则将接收多个参数$b,但cmd "$b"即使有空格,也将接收一个参数。

也可以看看:https://stackoverflow.com/questions/3958681/quoting-vs-not-quoting-the-variable-on-the-rhs-of-a-variable-assignment

相关内容