[test@localhost scripts]$ [ -n "$HOME" ] [test@localhost scripts]$ echo $? 0

g3110 2010-12-13 12:22:33
[test@localhost scripts]$ [ -n "$HOME" ]
[test@localhost scripts]$ echo $?
0 ##这个0是[ -n "$HOME" ]的返回值吗?
[test@localhost scripts]$ [ -n "$HOME" ] && echo "ture"
ture
...全文
207 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
mars199 2010-12-13
  • 打赏
  • 举报
回复
[test@localhost scripts]$ echo $?
0 ##这个0是[ -n "$HOME" ]的返回值吗?
----------------
可以说是返回值 最好把他理解为命令执行的返回状态
在shell里 如果是0 表示上个命令执行成功 如果非0 表示命令执行失败

[test@localhost scripts]$ [ -n "$HOME" ] && echo "ture"
ture
-----------------
这里不能以别的语言里的那种逻辑与来理解
在shell里
A && B && C A执行成功 才会执行B B执行成功才会执行C
A && B || C A执行成功 才会执行B A执行失败 则执行C

shell脚本里有好些地方是和别的语言里不一样的表达方式 千万不要把别的语言的经验移植过来
一个好的教程 是必须的 推荐《ABS》http://www.linuxsir.org/main/doc/abs/abs3.7cnhtm/index.html
steptodream 2010-12-13
  • 打赏
  • 举报
回复
[test@localhost scripts]$ echo $?
0 ##这个0是[ -n "$HOME" ]的返回值吗?
----------------
可以说是返回值 最好把他理解为命令执行的返回状态
在shell里 如果是0 表示上个命令执行成功 如果非0 表示命令执行失败

[test@localhost scripts]$ [ -n "$HOME" ] && echo "ture"
ture
-----------------
这里不能以别的语言里的那种逻辑与来理解
在shell里
A && B && C A执行成功 才会执行B B执行成功才会执行C
A && B || C A执行成功 才会执行B A执行失败 则执行C

shell脚本里有好些地方是和别的语言里不一样的表达方式 千万不要把别的语言的经验移植过来
一个好的教程 是必须的 推荐《ABS》http://www.linuxsir.org/main/doc/abs/abs3.7cnhtm/index.html
plusplus2010 2010-12-13
  • 打赏
  • 举报
回复
如果$? > 0,则表示上一个命令出错。命令的返回值跟它用于逻辑表达式时的真值是两码事,而且,[ -n "$HOME" ] && echo "ture"里面的&&是用来连接两个命令,不是逻辑操作。

19,615

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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