我发现这个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
它以始终返回成功的返回代码。根据整个脚本的使用方式,条件之外的单个失败命令甚至可能中止执行。