子 shell
有时候,需要一起执行几个命令。例如,如果希望在另一个目录中执行某一操作,可以使用 清单 8 中的代码。
清单 8. 同时执行几个命令
# pwd
/home/cormany
# cd testdir
# tar –cf ls_output.tar ls.out?
# pwd
/home/cormany/testdir
这是有效的,但是要注意,在执行这些步骤之后,您就不再位于原来的目录中了。通过把这些命令放在它们自己的子 shell 中,它们会作为子 shell 的实例执行。清单 9 演示如何使用子 shell 执行相同的代码。
清单 9. 使用子 shell 同时执行几个命令
# pwd
/home/cormany
# (cd testdir ; tar -cf ls_output.tar ls.out?)
# pwd
/home/cormany
test 命令、[ ] 和 [[ ]]
在编写 shell 脚本或用任何现代语言编写程序时,运算表达式或值的能力都很重要。Unix 一直通过 test 命令提供这一功能。正如 test 的手册页指出的,test 命令运算表达式参数的值,如果表达式的值是 True,就返回零(True)退出值。关于 test 的定义和所有可用条件的更多信息,请参见 test 手册页。
要想使用 test 命令,只需给这个命令提供适当的标志和文件名。当 test 运算完表达式时,返回到命令提示,可以在这里检查返回码,见 清单 10。
清单 10. 检查返回码
# ls –l
-rwxr-xr-x 1 cormany atc 786 Feb 22 16:11 check_file
-rw-r--r-- 1 cormany atc 0 Aug 04 20:57 emptyfile
# test -f emptyfile
# echo $?
0
# test -f badfilename
# echo $?
1
标签: