一直都在听他们说,写个脚本做什么什么事情。对于脚本,本来就没有什么概念,一切从零开始吧!
首先要了解linux下脚本的概念,这里有说:
shell 是一个命令解释器.是介于操作系统kernel 与用户之间的一个绝缘层.准确地说,它也是一种强力的计算机语言.一个shell 程序,被称为一个脚本,是一种很容易使用的工具,它可以通过将系统调用,公共程序,工具,和编译过的二进制程序粘合在一起来建立应用。
什么是shell?就是那个绝缘层啦~ 用户和kernel打交道的那个界面,通道,路径~
什么是脚本?就是绝缘层下的一个程序啦~ 既然是程序就有其语法和编写的规范等等啦~
它有什么作用?就是将系统调用,公共程序,工具,和编译过的二进制程序粘合在一起来建立应用~ 听起来似乎很有用,粘合功能很强大( ⊙ o ⊙ )!
到此~
概念清晰啦~
linux下SDK的测试中,我主要进行功能测试,测试的手段也是写c代码手动执行测试,好像没有脚本什么事,直到我想在开机的时候自己加载两个驱动程序,本着好学不倦的精神,本来可以手动加载的,但是刚好可以学习一下写脚本,以后还有用的着的地方呢,就开始学习啦~
网上搜资料……
向同事请教……
这是我的脚本:
##################script start####################
#!/bin/bash
#test script
echo "this script install the adv_watchdog driver and the 83627 driver!"
#install the 83627 driver
cd /lib/modules/2.6.23.1-42.fc8/kernel/drivers/hwmon
/sbin/modprobe w83627ehf
#uninstall the old watchdog driver
/sbin/rmmod iTCO_wdt
#install the adv_watchdog
modprobe adv_watchdog
exit 0
##################script end#####################
关于这段脚本,有以下几点需要说明:
1.脚本的语法
头一次写脚本,根本没见过脚本是什么样的,跑去问YF,怎么写脚本呢?YF就打开一个她写的脚本,给我看,必须要这样开头,布拉布拉~讲了一通,我回来了,又在网上搜了篇文章《linux脚本编写基础》http://linux.chinaunix.net/techdoc/beginner/2008/06/02/1008844.shtml,写了第一个脚本~只有一句话~echo
在每个脚本的开头都使用"#!",这意味着告诉你的系统这个文件的执行需要指定一个解释器.#!实际上是一个2 字节的魔法数字,这是指定一个文件类型的特殊标记, 换句话说, 在这种情况下,指的就是一个可执行的脚本(键入man magic 来获得关于这个迷人话题的更多详细信息).在#!之后接着是一个路径名.这个路径名指定了一个解释脚本中命令的程序,这个程序可以是shell,程序语言或者是任意一个通用程序.这个指定的程序从头开始解释并且执行脚本中的命令(从#!行下边的一行开始),忽略注释.
如:
1 #!/bin/sh
2 #!/bin/bash
3 #!/usr/bin/perl
4 #!/usr/bin/tcl
5 #!/bin/sed -f
6 #!/usr/awk -f
上边每一个脚本头的行都指定了一个不同的命令解释器,如果是/bin/sh,那么就是默认shell(在Linux 系统中默认是Bash).使用#!/bin/sh,在大多数商业发行的UNIX 上,默认是Bourne shell,这将让你的脚本可以正常的运行在非Linux 机器上,虽然这将会牺牲Bash 一些独特的特征.脚本将与POSIX 的sh 标准相一致.
退出命令 exit 0
# 退出之前返回0,返回0 表示成功.
嘿嘿,有了开头和结尾,怎么把那些有用的语句加上去,我想来想去,试了一下,原来是直接把命令敲到脚本里就行啦-_-||,当然这是最简单的用法啦,再复杂的我也没有接触到~
2.脚本如何执行
编写完脚本之后,就可以使用sh scriptname或者bash scriptname 来调用它.(不推荐使用sh <scriptname,因为这禁用了脚本从stdin 中读数据的功能.)更方便的方法是让脚本本身就具有可执行权限,通过chmod 命令可以修改.
比如:
chmod 555 scriptname (允许任何人都具有 可读和执行权限)
或:
chmod +rx scriptname (允许任何人都具有 可读和执行权限)
chmod u+rx scriptname (只给脚本的所有者 可读和执行权限)
既然脚本已经具有了可执行权限,现在你可以使用./scriptname 来测试它了.如果这个脚本以一个"#!"行开头,那么脚本将会调用合适的命令解释器来运行.最后一步,在脚本被测试和debug 之后,你可能想把它移动到/usr/local/bin(当然是以root 身份),来让你的脚本对所有用户都有用.这样用户就可以直接敲脚本名字来运行了.
中午吃饭的时候问YJ怎么调用一个脚本,让它执行起来?吃完饭YJ跑过来,演示了chmod的用法,脚本果然运行起来啦,这里chmod用法很重要~http://www.91linux.com/html/article/cmd/20070623/2926.html。
3.脚本如何开机运行
这里主要讲两种方法:
a.打开/etc/rc.d/rc.local,把开机要执行的命令加进去,就可以达到开机运行某个命令的目的啦~这个方法我虽然没有试过,但看rc5.d的最后一个链接S99local,应该没有问题;
b.把写好的脚本放到/etc/rc.d/init.d路径下,在rc5.d中建立一个链接,同样可以达到开机运行的目的,比较第一种方法,这种方法就是更独立,也可以自由选择开机运行的次序。
大概就是以上几点了,当然期间还遇到了一些问题,幸有高人相助,我在开机时加载驱动的目标终于达到啦~
这就是我的linux脚本学习之路,回头想想,学习时两点最重要:
1.有高人示范指点,有些东西,看别人做一遍,胜过自己摸索很久,这里要谢谢YF和YJ~
2.起初在网上搜集资料,有点大海捞针,不得要点,还是老老实实看本书,学的更快,谢谢YJ共享的书,真的觉得很好,高级Bash 脚本编程指南,想学脚本的就先别去大海里捞针了,从这本书入门,再去大海里捞金吧~