shell脚本小Demo

>一个学习写的小脚本、麻雀虽小,但是五脏俱全。该脚本的作用是获取当前系统的时间,然后将当前的时间作为文件名,创建文件。注意引号,反引号,$符号的使用规则等细节。
<!--more-->

脚本内容如下:

{% highlight HTML %}
#!/bin/bash
#获取当前时间
time="`date "+%Y-%m-%d_%H:%M:%S"`"
touch "${time}.txt"
path="./${time}.txt"
for (( i = 0; i < 5; i++ )); do
echo "写到刚刚创建的文件里面去咯~~~文件名是:$time" >> $path
done

for (( i = 0; i < 5; i++ )); do
echo "当前脚本的路径写入到文件中去:`pwd`" >> $path
done


if [ "$1" == "YES" ]; then
#管道
cat $path | grep -n "脚本"
else
cat $path | grep -n "创建"
fi
{% endhighlight %}

## 解释:

* date命令:获取系统的时间。时间格式使用了双引号来包裹,让其可以按照格式化输出。

* 反引号(ESC按钮下方的那个按键 `)的作用是让其包含的shell命令可以被执行。

* {} 花括号的作用是区分变量,${time}.txt的作用是让脚本知道引用time的变量并忽略.txt串。但是下文可以看到:**echo "写到刚刚创建的文件里面去咯~~~文件名是:$time"**,这里使用了$time却没有使用花括号来包裹、原因是time后面没有字符,脚本可以识别这个变量。

* echo打印内容,并使用`>>`命令来追加写到$path文件中,单个`>`表示覆盖写入。

* for..do..done循环的使用,if..else..fi的使用

* 重要的管道知识。管道符号`|`用来连接前后两个命令,并将前一个命令的输出作为后一个命令的输入。

* $1 这个变量代表执行脚本后跟的第一个参数。同理$2、$3,分别代表第二个参数,第三个参数。 $0 代表是脚本本身。

* grep命令:查找文件中指定的字符串

解释结束。

------------------------

执行演示:
执行命令sh -x ./test.sh脚本,使用sh -x的好处是可以看到脚本的执行流程,逐步显示在控制台,便于调试,查找错误。

带参数的执行:sh -x ./test.sh YES
这样脚本就可以取出$1等于YES,然后if判断就会进去。

结果:如开始所说,创建了以当前时间为名字的txt文件,打开txt文件,可以看到里面写了10行语句。

有兴趣的可以复制上面的脚本并自己调试运行。一个很入门但很有指导意义的小脚本:D

posted @ 2015-10-09 16:01  Mr轨迹  阅读(961)  评论(0编辑  收藏  举报