加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – Shell脚本以只包含冒号的行结尾?

发布时间:2020-12-14 01:01:31 所属栏目:Linux 来源:网络整理
导读:我正在研究/etc/init.d/中当前Debian 7.4.0 wheezy发行版中的System V init脚本(但它也出现在其他的,之前的版本中).几乎所有这些(来自现有服务)在该文件夹中找到,基本上是一个空行,只包含冒号(:)符号.即使是为了编写自己的init脚本而在那里找到的’骨架’模
我正在研究/etc/init.d/中当前Debian 7.4.0 wheezy发行版中的System V init脚本(但它也出现在其他的,之前的版本中).几乎所有这些(来自现有服务)在该文件夹中找到,基本上是一个空行,只包含冒号(:)符号.即使是为了编写自己的init脚本而在那里找到的’骨架’模板文件也是如此.这是代码末尾的复制/粘贴:

esac

:

(那是案例陈述的结尾,然后是文件的结尾)

有趣的是,没有退出0或退出$?调用,除了只在case语句中的某些条件,否则将被调用,所以看起来好像冒号是一种替代它?
完整的骨架文件代码在这里:https://gist.github.com/ivankovacevic/9917139

结肠怎么可能?为什么?

解决方法

冒号是一个语法元素,基本上什么都不做,但返回true.它可以在任何命令可以使用的情况下使用.

在sh(1)需要声明的情况下有时需要它.例如,这给出了一个错误:

if [ "$a" = "" ] ; then
  # comment out this part for now
  # echo yes
else
  echo no
fi

bash:意外标记’else’附近的语法错误

用以下代码替换注释:使其有效:

if [ "$a" = "" ] ; then
  # comment out this part for now
  : echo yes
else
  echo no
fi

很少需要在shell中明确使用“exit 0”;在没有exit语句的情况下,shell脚本以最后一个命令的状态退出,该命令是刚刚执行的shell脚本

/bin/false

将给出退出状态1:

$echo $?
1

结肠很大程度上是黑魔法,我从实验中学到了很少的知识.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读