Bash:ls的子shell行为
发布时间:2020-12-15 21:35:54 所属栏目:安全 来源:网络整理
导读:我想知道为什么我没有得到相同的输出: ls -1 -tF |头-n 1 和 echo $(ls -1 -tF | head -n 1) 我试图获取最后修改过的文件,但是在子shell中使用它有时会得到多个文件? 为什么那样以及如何避免? 解决方法 问题出现是因为您使用了一个不带引号的子shell和-F
我想知道为什么我没有得到相同的输出:
ls -1 -tF |头-n 1 和 echo $(ls -1 -tF | head -n 1) 我试图获取最后修改过的文件,但是在子shell中使用它有时会得到多个文件? 为什么那样以及如何避免? 解决方法
问题出现是因为您使用了一个不带引号的子shell和-F标志,用于ls输出附加到文件名的shell特殊字符.
可执行文件附加*. 当你跑步 echo $(ls -1 -tF | head -n 1) 然后 $(ls -1 -tF | head -n 1) 将返回一个文件名,如果它恰好是一个可执行文件,也是另一个文件的前缀,那么它将返回两者. 例如,如果你有 test.sh test.sh.backup 然后它会回来 test.sh* 当回声扩展到 test.sh test.sh.backup 引用子shell可以防止这种扩展 echo "$(ls -1 -tF | head -n 1)" 回报 test.sh* (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |