“/usr/bin/[” 怎么理解?

cnhkzyy 2017-07-05 11:28:54

如上图,是我看到《Advanced Bash-scripting Guide》中的一段话,说是test是bash的内置命令,不会调用/usr/bin/test这个二进制可执行文件,而[也不会调用/usr/bin/[ ,看到这里就不懂了
1. /usr/bin/[是什么东西?
2. 为什么说它是连接到/usr/bin/test呢?
3. 还有下面的,“["的类型是内置命令,而"]”会提示命令没找到?
4. 既然/usr/bin/[是内置命令,那么下面的脚本运行会报错呢?

if /usr/bin/[ -z "$1"
then
echo "No command-line arguments"
else
echo "First command-line argument"
fi

我的bash版本是GNU bash, version 4.1.2(1)-release (i386-redhat-linux-gnu),ABS书上说这个报错的问题已经在3.x上修复了,但是我的版本仍然会提示:/usr/bin/[: 缺少"]"
...全文
578 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
ipqtjmqj 2017-07-06
  • 打赏
  • 举报
回复
1. /usr/bin/[是什么东西? 具体请你ls -l /usr/bin/[ 我电脑上是个可执行文件 2. 为什么说它是连接到/usr/bin/test呢? 不一定链接到到/usr/bin/test, 请你ls -l /usr/bin/[ 看看 3. 还有下面的,“["的类型是内置命令,而"]”会提示命令没找到? ]应该是[命令的最后一个参数 4. 既然/usr/bin/[是内置命令,那么下面的脚本运行会报错呢? 应该需要]作为最后一个参数

427

社区成员

发帖
与我相关
我的任务
社区描述
非技术问题的乐园
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧