Linux shell脚本前面的实例是说明十进制和二进制的转换,还以一个有关文件循环的实例来结束这部分内容的学习。相信Linux shell脚本的基础学习的学习者应该能够掌握一些简单的Linux shell脚本的编写。
文件循环程序
或许您是想将所有发出的邮件保存到一个文件中的人们中的一员,但是在过了几个月以后,这个文件可能会变得很大以至于使对该文件的访问速度变慢。下面的 脚本rotatefile可
以解决这个问题。这个脚本可以重命名邮件保存文件(假设为outmail)为outmail.1,而对于 outmail.1就变成了outmail.2 等等等等...
- #!/bin/sh
-
# vim: set sw=4 ts=4 et:
-
ver="0.1"
-
help()
-
{
-
cat <
-
rotatefile -- rotate the file name
-
USAGE: rotatefile [-h] filename
-
OPTIONS: -h help text
-
EXAMPLE: rotatefile out
-
This will e.g rename out.2 to out.3, out.1 to out.2, out to out.1
-
and create an empty out-file
-
The max number is 10
-
version $ver
-
HELP
-
exit 0
-
}
-
error()
-
{
-
echo "$1"
-
exit 1
-
}
-
while [ -n "$1" ]; do
-
case $1 in
-
-h) help;shift 1;;
-
--) break;;
-
-
-*) echo "error: no such option $1. -h for help";exit 1;;
-
*) break;;
-
esac
-
done
-
# input check:
-
if [ -z "$1" ] ; then
-
error "ERROR: you must specify a file, use -h for help"
-
fi
-
filen="$1"
-
# rename any .1 , .2 etc file:
-
for n in 9 8 7 6 5 4 3 2 1; do
-
if [ -f "$filen.$n" ]; then
-
p=`expr $n + 1`
-
echo "mv $filen.$n $filen.$p"
-
mv $filen.$n $filen.$p
-
fi
-
done
-
-
# rename the original file:
-
if [ -f "$filen" ]; then
-
echo "mv $filen $filen.1"
-
mv $filen $filen.1
-
fi
-
echo touch $filen
-
touch $filen
这个脚本是如何工作的呢?在检测用户提供了一个文件名以后,我们进行一个9到1的循环。文件9被命名为10,文件8重命名为9等等。循环完成之后,我们将原始文件命名为文件1
同时建立一个与原始文件同名的空文件。
调试
最简单的调试命令当然是使用echo命令。您可以使用echo在任何怀疑出错的地方打印任何变量值。这也是绝大多数的shell程序员要花费80%的时间来调试程序的原因。Shell程序的
好处在于不需要重新编译,插入一个echo命令也不需要多少时间。
shell也有一个真实的调试模式。如果在脚本"strangescript" 中有错误,您可以这样来进行调试:
sh -x strangescript
这将执行该脚本并显示所有变量的值。
shell还有一个不需要执行脚本只是检查语法的模式。可以这样使用:
sh -n your_script
这将返回所有语法错误
这里Linux shell脚本基础学习就全部结束了。感谢大家的支持。
阅读(1087) | 评论(0) | 转发(0) |