Shell编程基础
-
编码方式
- 可以在命令行中直接编写,但是某一行出错就会停止执行
- vim 中先编写,记住bash 代码头部一定要加
#!/bin/sh
表明用什么程序解释脚本- 保存的文件名要是
.sh
结尾 - 运行之前先要赋予权限
chmod +x ./test.sh
- 保存之后写绝对路径来运行(别直接运行
.sh
,要不系统会在PATH
中找),如果有参数传递直接空格写在调用命令后面
- 保存的文件名要是
-
变量命名
- 首个字符一定是字母
- 中间不能有空格,可以用下划线
- 不能用标点符号
- 不能用关键字
- 变量赋值不能加空格
-
变量使用:
$a
就是使用定义的变量a
-
运算
$()
括号中为命令,例如w=$(expr$w + 1)
,其中expr
命令就是整数加命令- let "表达式"或者用
$(())
,或者用$[ ]
作为数学表达式
-
流程控制
-
注意每个关键字之间,和符号之间都要有空格,个别关键字和C中不一样
-
返回值和C不一样
-
test语句和分支结构连用,一堆参数 help test 查看, [ ] 中间空格+参数变量+空格
-
case
-
while
-
自定义函数,自变量作为函数形参 $1,2,3,…按顺序编号,还有几个特殊的自变量
- 调用的写法
-
输入和输出
- 命令行输入和对应自变量的关系
- read按行读取文本:read+变量 重定向到这个变量中,用重定向或者是管道
- 没有行可以读的时候就返回非零值退出
- 文件描述符
- 系统中有12个文件描述符,可以随意使用3到9
- 0,1,2代表标准输入,标准输出和错误
- 执行命令的时候可以指定命令的三个标准输出,使用文件重定向,<,<<,>,>>
-
-
调试跟踪
- 脚本首行加上 -x 技术跟踪
-
多脚本文件编程
- 通过 点命令 包含文件—— .filename 写在脚本的#! 的下一行
-
内建命令:
- expert命令可以将变量让别的shell可见,多个脚本文件互相调用的时候可以用到