shell脚本
shell简介
shell脚本程序就是按照一定的语法结构把若干linux命令组织在一起,使这些命令按照我们的要求完成一定功能。它可以进行类似程序的编写,并且不需要编译就能执行.
当编辑好脚本程序后,要使脚本程序可执行,需要改变其权限:
#chmod +x filename
我们用的shell版本是bash,首先新建一个后缀名为 .sh的文件,这就是shell脚本, 如:vi test.sh 编好脚本后,保存退出,加可执行权限后就可以运行这个脚本,和执行程序一样。
Shell中变量与变量的设定: 变量没有类型
1.变量与变量内容以等号(=)来连结;
2.等号两边不能直接接空格符;
3.变量名称只能是英文字母与数字,但是数字不能是开头字符;
4.引用变量用“$变量名”,例如 echo $name
5.取消变量的方法 unset 变量名, 例如:unset name
6.一般大写字符为系统预设变量,自己设定的变量可用小写。
单引号,双引号,反引号,反斜线用法:
若有空格符可以使用双引号或单引号将变量内容结合起来,但须要特别留意,双引号内的特殊字符可以保有变量特性,但是单引号内的特殊字符则仅为一般字符。
# name=“$LOGNAME is me” //root is me
# name=‘$LOGNAME is me’ //$LOGNAME is me
反引号用于设置系统命令的输出到变量,shell将反引号中的内容作为一个系统指令并执行其内容。
如:echo `hello` 系统会把hello当命令执行,但hello不是命令,不能执行。
反斜线用来屏蔽特殊字符的特殊含义,如:$ * ! $ | ?
用echo \* 就会输出 * 这个字符
特殊的变量:
$# 传递到脚本的参数个数
$* 以一个单字符串显示所有向脚本传递的参数
$$ 脚本运行的当前ID号
$? 显示最后命令的退出状态, 0表示没有错误 非0表示有错误
$0 执行脚本的文件名
$1 $2 $3 ……… 脚本的第n个参数名
env 显示目前系统中主要预设变量内容
set 显示目前系统中全部变量内量, 这里包括用户设定的变量
expr 是一个手工命令行计数器,可计算加减乘除,并输出结果
如: expr 10 + 10 输出结果为20 注意乘法要用:\*
declare 声明变量的内容
用法: declare 参数 变量名
参数: -i 定义为整数 -f 定义为函数
-a 定义为数组 -r 定义为只读
-x 定义为透过环境输出变量
例如: declare –i a 定义a 为整数,在进行整数运算时,可用a来存储结果
read 从键盘读入变量内容,相当于C语言的scanf 用法: read 变量名
条件测试:
test命令就是用于测试字符串、文件状态和数字的.test命令有两种格式:
test condition
或[ condition ]
使用方括号时,要注意在条件两边加上空格.
测试文件状态的条件表达式
-e 是否存在 -d 是目录 -f 是文件 -L 符号连接
-s 文件非空 -r 可读 -w 可写 -x 可执行
例如:#test -e test.sh && echo “exist”
先判断如果该文件存件存在,则输出字符串 exist
[ … ] && …… 先判断如果是真,则执行后面的命令
[ … ] ;(分号)…… 先判断再执行,不管条件真假
字符串测试:
test “str1” 参数 “str2”
[ “str1” 参数 “str2” ]
参数: = 两个字符串相等 != 两个字符串不相等
-z 空串 -n 非空串
数值测试:
test num1 参数 num2
[ num1 参数 num2 ]
参数: -eq 数值相等 -ne 数值不相等
-gt 数1大于数2 -lt 数1小于数2
-ge 数1大于等于数2
-le 数1小于等于数2
多重条件判定:
-a (and)与 当前后两条件都为真则返回true
-o (or)或 当前后两条件有一个为真则返回true
! 返回相反状态
控制结构:
if [条件1]; then
执行第一段程序
elif [条件2]; then
执行第二段程序
else
执行第三段程序
fi
case $变量名 in
“第一个变量内容”)
程序段1
;;
“第二个变量内容”)
程序段2
;;
*)
其他程序段
exit 1
esac
在ARM linux平台上,找到 /usr/etc/rc.local 用vi 打开它,里面有一段if语句,查看/mnt/yaffs/下有无 myconfig.sh的文件,如果有就执行。这是用户自己配置的开机脚本,可以在/mnt/yaffs/下新建一个myconfig.sh的文件,在里面写上自己想在开机运行的脚本。比如修改IP,挂接NFS,运行一个小程序等。
linux开机启动五个脚本文件介绍:
/etc/profile:
此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.
并从/etc/profile.d目录的配置文件中搜集shell的设置.
/etc/bashrc:
为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.
~/.bash_profile:
每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该
文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件.
~/.bashrc:
该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该
该文件被读取.
~/.bash_logout:
当每次退出系统(退出bash shell)时,执行该文件.
另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,
而~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是"父子"关系.
~/.bash_profile 是交互式、login 方式进入 bash 运行的
~/.bashrc 是交互式 non-login 方式进入 bash 运行的
通常二者设置大致相同,所以通常前者会调用后者。
变量与变量的设定
条件测试
控制结构