shell编程入门
· 什么是shell
与 Windows 系统的命令提示符类似,shell 是一个作为用户与 Linux 系统进行交互的程序,它允许用户向操作系统输入需要执行的指令,当然,Linux shell 的功能要比 Windows 的命令提示符强得多。
· 为什么要使用shell编程
快速、简单、便捷、高效
· 常用的shell
shell名 | 简介 |
---|---|
sh | 源于UNIX最初的shell |
ksh、pdksh | korn shell、public domain korn shell(公共域),是许多商用版本UNIX的默认shell |
bash | Linux的主要shell,代码开源,与ksh有很多相似之处 |
csh、tesh、zsh | C shell及其变体,继bash、ksh之后第三个最流行的shell |
· shell程序设计
1. 交互式程序
- for 循环打印
$ for value in 1 2 3 4 five
> do
> echo $value
> done
( for 开启的循环,以 done 结束)
如果每次要执行一系列命令,都要经过漫长的输入过程,因此,我们可见所要执行的命令存入一个文件中,这就是shell脚本。
2. shell脚本
- 使用文本编辑器创建名为 test 的文件
$ vim test
- 编辑内容
#!/bin/sh
for value in 1 2 3 4 five
do
echo $value
done
exit 0
- 调用 shell 把 test 作为参数执行
$ /bin/sh test
- 也可以使用 chmod 命令将 test 设置为可执行文件( ./ + 可执行文件名)
$ chmod +x test
$ ./test
3. shell语法
3.1 变量
- 在shell里,变量通常不需要事先声明
- 所有变量都会被看作字符串并以字符串形式存储,即便被赋值为数值
- 通过在变量名前加$来访问变量值
例子:使用 vim 文本编辑器(或gedit)创建名为 variable01.sh 的文件( Linux 和 UNIX 很少利用文件拓展名来决定文件类型,但你可以使用.sh或其他拓展名标识脚本),内容如下:
#!/bin/sh
salutation=Good!
echo $salutation
salutation="Hi! J"
echo $salutation
salutation=9-2
echo $salutation
exit 0
其中,echo命令是向屏幕输出内容。值得注意的是,赋值语句中如果存在空格,必须使用双引号括起来,另外,等号两边不能存在空格。
执行:
$ /bin/sh variable01.sh
3.1.1 引号的使用
- 脚本文件中的参数以空白字符(如空格、制表符、回车等),必须使用双引号
- 将 $变量名 放入双引号内时,shell 会把它的值替换为所指变量值
- 将 $变量名 放入单引号内时,不会发生替换,其值为 $变量名
- 若存在诸如 “ $ ” 等有特殊含义的字符,可使用 “ \ ” 取消特殊含义
例子:新建名为 variable02.sh 的文件,其内容为
#!/bin/sh
variable="this is a varible"
echo $variable
echo "$variable"
echo '$variable'
echo \$variable
exit 0
执行:
3.1.2 环境变量
shell脚本执行过程中,已经被初始化供使用的变量,通常以大写字母作为变量名,小写字母作为值。
环境变量 | 说明 |
---|---|
$HOME | 当前用户的用户目录(/home/用户名) |
$PATH | |
$PS1 | |
$PS2 | |
$IFS | |
$0 | |
$# | |
$$ |