测验:变量与条件
当 FILE='My Report.pdf' 时,为什么 rm $FILE 会失败?
- 文件名中有大写字母
- rm 不支持带空格的文件名。
- 这是因为该值是空的,因为它被单引号替换了。
- 这是因为变量替换后根据空格进行单词分隔,从而产生两个参数。
${VAR:-默认值} 和 ${VAR:=默认值} 有什么区别?
- 第一部分将值保留在变量中,最后一部分则不会。
- 后者实际上是给变量赋了默认值,而前面只是当场使用。
- 仅当前面为空且后面未定义时才有效。
- 没有区别,只是符号不同。
为什么脚本的使用指令应该发送到标准错误而不是标准输出?
- 这是因为标准错误的输出速度更快。
- 这是因为标准输出只能发送到文件。
- 这是因为为了在终端中使用颜色,它必须是标准错误。
- 避免破坏只捕获结果的使用方法,如result=$(script.sh)
bash 脚本中 [[ ]] 比 [ ] 更安全的主要原因是什么?
- 因为它跑得更快
- 这是因为内部不会发生分词和通配符。
- 由于它是 POSIX 标准,因此具有高度可移植性。
- 因为它返回更准确的退出代码
当我使用 if [ -e /var/log ] 检查“是否存在常规文件”时,在目录中也找到了真实的结果。我应该写什么?
- -d
- -s
- -f
- -r