我正在阅读Linux命令行手册,偶然发现了这一节。它是关于命令的:
cd "$dir_name" && rm *
然后说了下面的话:这是更好的,但仍然有可能是变量dir_name未设置或为空,这将导致用户主目录中的文件被删除。这怎么可能呢?如果dir_name为空,那么语句应该计算为非零值,即false,然后不应该执行第二个命令rm,那么为什么要执行它?
6za6bjd01#
你错误地认为cd应该返回一个非零的退出码。很容易验证:
cd
ljm@verlaine[~]$ cd /tmp ljm@verlaine[/tmp]$ if cd "" ; then echo yes; fi /home/ljm yes ljm@verlaine[~]$
这证明了cd ""有一个零退出码和cd-s到你的主目录。请注意,可能.bashrc包含
cd ""
.bashrc
export CDPATH='~'
1条答案
按热度按时间6za6bjd01#
你错误地认为
cd
应该返回一个非零的退出码。很容易验证:这证明了
cd ""
有一个零退出码和cd-s到你的主目录。请注意,可能
.bashrc
包含