linux - shell 引用行为

标签 linux shell quoting

我刚刚了解到,在某些情况下引用会产生巨大的差异,我做了一些测试,这是我刚刚做的,

$ xfs=$(find . -type f -perm -111)  #find all files with x-perm
$ echo "$xfs"
./b.out 
./a.out
$ echo $xfs
./b.out ./a.out  #why all in one line, but the above takes two?

如果 $xfs 包含 \n,据我所知,echo -e 将扩展 \n,但是如何echo "$xfs" 可以分两行吗?

最佳答案

任何空格通常在 shell 中被视为参数分隔符。因此,您的第一个示例有两个参数。 echo 打印由一个空格分隔的参数,这就是您在第二个示例中看到的行为。

但是,当您使用引号时,它们之间的任何内容都是一个参数,并且按字面意思打印。第一个示例中的 one 参数已经包含一个换行符,因此它用换行符打印。

bash echo 内置的 -e 选项控制转义序列的扩展,如 \n;但是,您没有任何转义序列。该变量包含文字换行符。

关于linux - shell 引用行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9426991/

相关文章:

c - OpenGL 纹理,黑色方 block

linux - 如何比较unix中不同列的文件?

linux - Perf 启动开销 : Why does a simple static executable which performs MOV + SYS_exit have so many stalled cycles (and instructions)?

java - Tomcat 6中的Webapp启动后找不到环境变量

php - 在 PHP 中,如何创建包含引号和撇号的 mySQL 选择查询?

linux - find 命令适用于提示,而不是 bash 脚本 - 通过变量传递多个参数

linux - U-Boot:TI Sitara AM335X MII 连接到 Marvell 开关

java - JAVA 中的非交互式密码 SSH

shell - 如何将批处理(CALL)命令的输出存储到变量

python - Python 中的 XML 引用