Shell 脚本

来源:互联网 发布:阿里云机顶盒刷机固件 编辑:程序博客网 时间:2024/04/30 08:51

参考:http://study.163.com/course/courseMain.htm?courseId=306001


一、创建第一个 Shell 脚本

1、任务

(1)、添加一个名为 zhangsan 的用户

useradd zhangsan

(2)、将用户 zhangsan 的密码设置为 123456

passwd zhangsan


2、整理执行语句

#2016.11.26,by air

echo "正在创建用户账号 zhangsan ......"

useradd zhangsan

echo "正在为用户 zhangsan 设置密码......"

echo 123456 | passwd --stdin zhangsan

echo "创建成功."


3、运行脚本

假设脚本文件名为 uad.sh

方法1:

chmod +x uad.sh

./uad.sh

方法2:

sh uad.sh

方法3:

source uad.sh


二、管道操作

将一端的命令输出交给另一端的命令处理

格式:命令 1 | 命令 2

注:管道是单向的


在 etc 目录下查找以 .conf 结尾的文件,查找的结果以一行一个的形式列出来

find /etc -name "*.conf" -type f

通过 wc 命令进行统计个数

find /etc -name "*.conf" -type f | wc -l


列出系统中所有的进程信息

ps aux

只列出包含 httpd 的进程信息

ps aux | grep httpd


三、重定向操作

改变执行命令时的默认输入、输出

(1)重定向输入

操作符:<

用途:从指定文件读取数据,而不是从键盘读入

(2)重定向输出

操作符:>、>>

用途:将输出结果覆盖、追加到指定文件

(3)标准错误输出

操作符:2>、2>>

用途:将错误信息覆盖、追加到指定文件

(4)混合输出

操作符:&>、&>>

用途:将标准输出和错误信息覆盖、追加到指定文件


查看当前 linux 内核版本

uname -r

将版本信息保存到文件

uname -r > version.txt


查看 version.txt

cat version txt

如果运行 cat version2.txt 但是没有 version2.txt 这个文件会报错:

cat: version2.txt : 没有那个文件或目录

将错误信息输出到一个 error.txt 文件中

cat version2.txt 2> error.txt

然后执行 cat error.txt

显示 cat: version2.txt : 没有那个文件或目录


四、逻辑分割

处理多条命令之间的逻辑关系

逻辑与:&&

逻辑或:||

顺序执行:;






四、使用变量

1、变量基本操作

定义及赋值

格式:变量名=变量值

引用变量

格式:$变量名、${变量名}



双引号:允许引用、\转义

单引号:禁止引用、转义

反撇号,或者$():以命令输出进行替换



2、常见的环境变量

用来记录/设置运行参数

系统赋值:USER、LOGNAME、HOME、SHELL、.......、

用户操作:PATH、LANG、CLASSPATH、......、




3、其它特殊变量

$?:前一条命令的状态值,0为正常、非0异常

$0:脚本自身的程序名

$1-$9:第1-第9个位置参数

$*:命令行的所有位置参数的内容

$#:命令行的位置参数个数





五、数值运算及处理

1、整数运算操作

使用 expr 命令,计算表达式

格式:expr 数值1 操作符 数值2

使用 $[] 表达式,算式替换

格式:$[数值1 操作符 数值2]





2、几个数值处理技巧

变量的递更处理

格式:let 变量名++、let 变量名--

使用随机数

RANDOM 变量

生成数字序列

格式:seq 首数 末数、seq 首数 增量 末数




3、小数运算操作



六、字符串处理

1、子串截取操作






2、字符串替换



3、使用随机字符串





























0 0