`eval` 中的或(||)运算

`eval` 中的或(||)运算

我发现这个if声明/etc/init/rc-initsys.conf

# Check for default runlevel in /etc/inittab
    if [ -r /etc/inittab ]
    then
    eval "$(sed -nre 's/^[^#][^:]*:([0-6sS]):initdefault:.*/DEFAULT_RUNLEVEL="\1";/p' /etc/inittab || true)"
    fi

我不明白命令中的or||)操作eval

您能给我一些提示或参考吗?

答案1

如果第一个命令失败,则第二个命令将执行并返回成功退出代码。它确保整行(例如$?)的返回值为true(退出代码0)。

一般来说,后续命令或脚本末尾的操作(其调用者)可能会检查前一个操作的返回值以确定如何继续(即错误处理)。

如果您(作为脚本作者)不想报告命令失败,您可以添加|| true它以始终返回成功的返回代码。根据整个脚本的使用方式,条件之外的单个失败命令甚至可能中止执行。

相关内容