You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何cd "$dir_name" && rm *中dir_name为空时rm *仍会执行?

问题解答

你疑惑的核心是对cd "$dir_name"在dir_name为空时的行为理解有误。

当dir_name未设置或为空字符串时,cd "$dir_name"等价于执行无参数的cd——而无参数的cd默认会切换到用户主目录,并且返回值为0(执行成功),这就会触发后续的&& rm *,最终导致主目录下的文件被删除。

实际测试验证:

  • 执行dir_name=""后,再运行cd "$dir_name" && echo "执行成功",你会看到输出"执行成功",同时当前目录已切换到主目录。
  • 要规避这个风险,可以先判断变量是否非空,比如[ -n "$dir_name" ] && cd "$dir_name" && rm *,或者开启set -u选项(遇到未设置的变量直接报错退出)。

书中的说法完全正确,这种写法的风险根源是cd空参数时的默认跳转行为,而非cd执行失败。

内容的提问来源于stack exchange,提问作者Skmp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 07:34:50