Content #
单括号允许在if语句中使用子shell(子shell的用法参见第5章)。单括号形式的test命令格式如下:
(command)
在bash shell执行command之前,会先创建一个子shell,然后在其中执行命令。如果命令成功结束,则退出状态码会被设为0,then部分的命令就会被执行。如果命令的退出状态码不为0,则不执行then部分的命令。
$ cat SingleParentheses.sh
#!/bin/bash
# Testing a single parentheses condition
echo $BASH_SUBSHELL
if (echo $BASH_SUBSHELL)
then
echo "The subshell command operated successfully."
else
echo "The subshell command was NOT successful."
fi
$
$ ./SingleParentheses.sh
01
The subshell command operated successfully.
$
当脚本第一次(在if语句之前)执行echo $BASH_SUBSHELL命令时,是在当前 shell中完成的。该命令会输出0,表明没有使用子shell。在if语句内,脚本在子shell中执行echo $BASH_SUBSHELL命令,该命令会输出1,表明使用了子shell。子shell操作成功结束,接下来是执行then部分的命令。
From #
Linux命令行与shell脚本编程大全