此行位于linux上的/etc/rc.sysinit
文件中:
[ -r /proc/mdstat -a -r /dev/md/md-device-map ] && /sbin/mdadm -IRs
我对它实际完成的内容并不感兴趣,而不是语法如何工作。
答案 0 :(得分:2)
它测试文件/proc/mdstat
和/dev/md/md-device-map
是否存在且可读(-r
),如果是,则执行/sbin/mdadm -IRs
。
方括号是程序test
(或其Bash替换)的替代名称,可以测试许多内容,例如文件的存在。 -a
是合乎逻辑的“和”。
有关详细信息,请参阅man bash
中的“条件表达式”。
答案 1 :(得分:1)
[
实际上是一个命令名称,它等同于test
命令。因此,使用man test
找出-r
的含义。
根据您的系统,您可能会在[
中找到/usr/bin
:
$ ls -l /usr/bin/[
-rwxr-xr-x 1 root root 37000 Oct 5 2011 /usr/bin/[
或者它可以是符号链接:
$ ls -l /usr/bin/[
-rwxr-xr-x 1 root root 4 Oct 5 2011 /usr/bin/[ -> test
有些shell也有[
作为内置命令(有些shell甚至有[[
提供了额外的选项)。与大多数内置命令一样,您也可以在文件系统中找到一个实现。
答案 2 :(得分:1)
这意味着:
如果您可以阅读/proc/mdstat
并且您可以阅读/dev/md/md-device-map
,那么请运行/sbin/mdadm -IRs
请参阅help test
注意强>
[[
是一个类似于[
命令(但功能更强大)的bash关键字。请参阅http://mywiki.wooledge.org/BashFAQ/031和http://mywiki.wooledge.org/BashGuide/TestsAndConditionals
除非您是为POSIX sh撰写的,否则我们建议使用[[
。