|
一般情况下,在Linux下运行程序有两种方式:
1)直接在终端输入Linux命令,一次运行一个命令
2)把多条Linux命令写到一个脚本中,直接运行脚本
对于第一种情况,其优点是快速得到结果,无需额外的考虑;缺点是命令的复用性较差,且查看已经运行的命令,及命令之间的逻辑关系不易。
对于第二种情况,其优点是程序复用性好,可以多次修改,重复运行,以及设计复杂的逻辑关系;而缺点是不可随意运行,以免覆盖已经得到的结果。
考虑到这两种方式的优缺点,认为第三种运行程序的方式更好一些,即,将需要运行的命令通过一个脚本打印到屏幕上,检查命令情况,然后通过管道连接用sh程序运行脚本打印出的命令。例如
gzip_files.sh :
for i in $(ls *.txt)
do
j=$(basename "*.txt")
if [ -e $i.gz ] ; then
echo "# $i: gzipped file exist"
else
echo "# compress file $i"
echo "gzip -c $i > $i.gz"
fi
done
这段代码的意思是,先检查一下当前文件夹下有哪些后缀为txt的文件,然后检查每一个后缀为txt的文件是否存在其对应的后缀为gz的文件,如果存在,则打印一个说明,如果不存在则打印一个gzip命令,输入结果可以是
# 1.txt: gzipped file exist
# compress file 2.txt
gzip -c 2.txt > 2.txt.gz
...
通过检查输出结果,可以快速查看需要运行的命令是否正确,并可以通过grep -v删除一些命令,然后通过管道连接sh程序运行这些命令,即
sh gzip_files.sh | sh
sh gzip_file.sh | grep -v 'important.txt' | sh
这样做虽然增加了额外的步骤,但是以这种只打印命令到屏幕、不实际运行命令的方式写作的脚本可以随意的运行一下,检查结果,不必担心重复运行了某个命令产生难以预期的后果。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-7-19 19:21
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社