全行代码上下文:
if ! strstr "\`cat /proc/cmdline\`" rd.live.image || [ "\$1" != "start" ]; then
exit 0
fi
strstr定义为:
strstr() {
[ "${1#*$2*}" = "$1" ] && return 1
return 0
}
附加信息:代码来自fedora-live-base.ks。Fedora提供的基本kickstarter文件。我试图了解ks文件的大部分功能。我在文件的许多脚本部分中苦苦挣扎。
strstr() {
[ "${1#*$2*}" = "$1" ] && return 1
return 0
}
command1 && command2
不论执行什么操作,都将执行command1
([ "${1#*$2*}" = "$1" ]
),然后只有 command1
返回0
(&&
)时,才会执行command2
(return 1
)。
当return n
其在函数内部执行时,它将在此时停止函数执行,并返回n
因此,strstr
将返回1
,如果[ "${1#*$2*}" = "$1" ]
返回0
,或0
以其他方式。
[
是内置“测试”的同义词。
[ str1 = str2 ]
0
如果字符串相等,将返回。
$1
它是传递给的第一个参数strstr
,$2
是第二个,并且"${1#*$2*}"
是Shell参数扩展为$1
:
$ {parameter#word}如果模式与参数的扩展值的开头匹配,则扩展的结果将是具有最短匹配模式(“#”大小写)或最长匹配模式(即'##'大小写)已删除。
因此,它将被扩展为$1
,最开始的*$2*
(<<这是Pattern Matching)最短匹配被删除。然后,将扩展后的值与全部值进行比较$1
(这只是一种检查是否包含的奇特方法$1
$2
)。
好了,现在,什么是$1
和$2
?
$2
很简单rd.live.image
,并且
$1
是文件的内容 /proc/cmdline
/proc/cmdline
:此文件显示启动时传递给内核的参数。
然后,最后:
strstr“`cat / proc / cmdline`” rd.live.image有什么作用?
正在检查rd.live.image
启动时传递给内核的参数中是否存在。在这种情况下,它将返回0
,否则将返回1
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句