Shell脚本:
1.shell基础:
-
shell脚本语言的本质:
a解释型语言
b.shell命令的有序集合 -
基本过程为三步:
1.建立shell文件
2.更改权限 (用chmod命令修改权限)
3.执行脚本文件 ./*.sh -
shell变量
shell允许用户建立变量存储数据,但不支持数据类型(整形、字符、浮点型),将任何赋给变量的值都解释为一串字符。
Variable=value
- 命名规则同C++命名规则
count=1
echo $count -
Bourne shell有如下四种变量:
1.用户自定义变量
2.位置变量即命令行参数
3.预定义变量
4.环境变量
- 用户自定义变量
在shell编程中通常使用大写变量,方便识别。
COUNT=1
变量的调用:在变量名前加$。
echo $HOME
Linux Shell/bash从右向左赋值。
使用unset命令删除变量的赋值。
- 位置变量
$0:与键入的命令行一样,包含脚本文件名。
$1… $9分别包含第一个到第九个命令行参数
$#:包含命令行参数的个数
$@:包含所有命令行参数:“$1…$9”
$?:包含前一个命令的退出状态
$*:包含所有命令行参数
$$:包含正在执行的进程ID号
- 常用Shell环境变量
HOME:/etc/passwd文件中列出用户的主目录
IFS:Internal field separator,默认为空格,Tab及换行符
PATH:shell搜索路径
PS1,PS2:默认提示符($)及换行提示符(>)
TERM:终端类型
Shell循环
Shell中有3中循环,分别是for,while,until,until与while正好相反,前者条件为假则执行,后者条件为真时执行。基本和C语言中额循环没什么区别。只是语法上有些差异。
for循环
格式:
for var in word1 word2 ……
in
command
command
……
done
谈到循环,就不得不说$@变量,它代表该shell脚本的所有参数。所以,要写一个命令行中键入的所有参数的程序就应该向下面这样:
for arg in “$@”
do
echo $arg
done
说到$@就不得不说for循环的另一种形式,就是缺省参数
for var
in
command
command
……
done
上面的程序等价于:
for var in “$@”
in
command
command
……
done
下面的代码中,变量i在每次迭代的过程里都会保存一个字符,范围从a到z:
for i in {a…z}; do actions; done;
for 循环也可以采用C语言中的for循环格式。例如:
for (( i=0; i<10; i++))
{
commands;
}
until循环
until很简单,只要记住它与while正好相反即可,即条件为假继续执行,条件为真,就跳出循环。
while循环
我们知道shell中的if语句结束标识是fi,与c语言相差很大。既然我们已经知道了for循环的形式,那while也就不难了,因为shell不能与它自己差别很大的。
while command1
do
command
command
……
done
示例:
从1数到5的小程序
i=1
while[ “$i” -le 5 ]
do
echo$i
i=$((i + 1 ))
done
正如for循环中,我们穿插介绍了$@一样,讲到while循环,可以顺便介绍一下shift,因为while循环经常跟shift结合使用。shift命令使位置变量下移,即使得$1=$2,$2= 3 , 最 后 3,最后 3,最后#还要减少1,也就是说把第一个参数删除了,而且找不回来了。如果我们要写一个打印所有参数的程序,就因该向这样的:
while[ “$#” -ne 0 ]
do
echo"$1"
shift
done
break和continue
说到循环,肯定不能漏掉break和,continue,它们的作用和在C语言中一模一样,完。