shell脚本学习笔记(一)—— shell基础及sed

  shell既是一种命令语言,又是一种程序设计语言,有变量、函数,流程控制等。shell脚本本身是基于高层的开发,所以不宜做底层的编程,但是在高层做一些系统应用的配置和管理,恰到好处。

1 学习shell脚本好的资料

2 查看系统使用的shell

查看系统支持哪些shell:
  cat -n /etc/shells

查看系统默认的shell:
  echo $SHELL
  env | grep SHELL

查看当前的shell:
  ps
输入一条不存在的命令,查看出错的shell提示

shell脚本中只能用#来注释。

3 shell脚本名

shell脚本文件有无后缀和后缀名是什么并不影响脚本的执行,只是用.sh,见名知意。
file filename这个命令可以辨别文件的类型。

4shell脚本的执行与停止

4.1 shell脚本的执行

1、给脚本添加可执行权限,以相对路径或者绝对路径找到脚本,然后执行。
2、sh XXX.sh或者bash xxx.sh,不需要脚本有可执行权限。
3、. xxx.sh或者source xxx.sh,也不需要脚本有可执行权限。
sh –help可以查看sh命令的一些选项,-n或-x选项比较有用。

让脚本或者进程后台执行,即使关掉了终端也还会继续运行:
nohup BatchMain > /dev/null &

4.2 shell脚本的停止

1、return会退出脚本,不会关闭终端。
注意:return命令不能直接用在脚本的主程序中。但当用source a1.sh(或者. a1.sh)执行脚本的时候,可以用在脚本中。
2、exit会退出脚本的执行,并且会关闭当前的终端。

5 shell脚本的参数

$# 传递给脚本或函数的参数个数。
$1 $2 运行脚本时传递给脚本的参数称为命令行参数。命令行参数用 $n 表示,例如,$1 表示第一个参数,$2 表示第二个参数,依次类推。
$? 上个命令的退出状态,或函数的返回值。

6 变量赋值和if判断条件注意点

shell脚本中给变量赋值的“=”两边不能有空格。
有时我们想要在说明一个变量并对它设定为一个特定值后就不改变它的值,这可以用下面的命令来保证一个变量的只读性:
  readly 变量名
if选择判断结构中判断条件所在的中括号里面的内容要左右间隔一个空格。

7 shell算术运算

#!/bin/sh
i=4
j=5
sum1=`expr $i + $j`
sum2=$(($i + $j ))
((sum3=i +j ))
echo "$sum1 $sum2 $sum3"

以上脚本可以验证`expr $i + $j`和$(($i + $j))的结果都是一样的,都是求i和j的和。

8 sed编辑

sed一次执行多个命令的方式有3种:
1、在命令间用;分割。
2、使用-e选项连接多个命令。
3、在shell脚本中可以使用换行把多个命令区分。

获取某个进程的PID:

ps -e | sed '/'$1'/!d;s/^*\([0-9]*\).* \(.*\)$/\1 \2/;/'$1'/!d;s/ .*$//'
ps -e | sed -e '/'$1'/!d' -e 's/^*\([0-9]*\).* \(.*\)$/\1 \2/' -e '/'$1'/!d' -e 's/ .*$//'

$1为执行脚本时给的第一个参数。

sed的详细使用,见博客——流编辑器sed:
http://www.cnblogs.com/mchina/archive/2012/06/30/2570523.html

第1章 BashShell命令 6 1.1 Shell提示符 6 1.2 文件与目录Shell命令 7 1.2.1 更改目录命令(cd) 7 1.2.2 列表命令(ls) 7 1.2.3 操作文件命令 10 1.2.4 目录处理命令 14 1.2.5 查看文件内容命令 15 1.3 监控程序 20 1.3.1 进程查看 20 1.3.2 实时进程监控 22 1.3.3 停止进程 24 1.4 监控磁盘空间 25 1.4.1 挂载介质 25 1.4.2 使用df命令 26 1.4.3使用du命令 27 1.5 操作数据文件 28 1.5.1 数据排序(sort) 28 1.5.2 搜索数据 (grep) 30 1.5.3 压缩数据 30 1.5.4 归档数据(tar) 33 1.6 使用Linux环境变量 34 1.6.1 设置环境变量 34 1.6.2 默认的shell环境变量与path变量的设置 37 1.7 Linux文件权限 40 1.7.1 Linux安全性 40 1.7.2 使用Linux用户组 46 1.7.3 解码文件权限 47 1.7.4 修改安全设置 49 1.8 vim编辑器 52 第2章 基本脚本编译 54 2.1 创建脚本与使用变量 54 2.1.1 创建脚本 54 2.1.2 使用变量 55 2.2 重定向输入输出与数学计算 57 2.2.1 输出重定向 57 2.2.2 输入重定向 58 2.2.3 管道 58 2.2.4 数学计算 58 2.3 退出脚本 60 第3章 结构化命令 61 3.1 if语句 61 3.1.1 if-then语句 61 3.1.2 if-then-else语句 61 3.1.3 嵌套if语句 62 3.2 if条件语句 63 3.2.1 数值比较 63 3.2.2字符串比较 64 3.2.3 文件比较 65 3.2.4 复合条件检查 65 3.3 if-then的高级特征与case命令 66 3.3.1 使用双圆括号 66 3.3.2 使用双方括号 67 3.3.3 case命令 67 3.4 for命令 67 3.4.1 读取列表 68 3.4.2 读取变量与读取命令 69 3.4.3 改变字段分隔符与使用通配符读取目录 69 3.4.5 C式的for命令 70 3.5 while、until命令 71 3.5.1 使用多条测试命令 71 3.5.2 until命令与循环嵌套 72 3.6 文件数据的循环与控制循环 73 3.6.1 文件数据的循环 73 3.6.2 break命令 73 3.6.3 continue命令 75 第4章 处理用户输入与显示数据 76 4.1 命令行参数与特殊的参数变量 76 4.1.1 读取参数 76 4.1.2 读取程序名称 77 4.1.3 测试参数 77 4.1.4 参数计数 77 4.1.5 获取所有数据 78 4.2 移位与选项 79 4.2.1 移位 79 4.2.2 找出选项 79 4.2.3 使用getopt命令 81 4.2.4 更高级的getopts命令 83 4.2.4 标准化选项 84 4.3 获取用户输入 84 4.3.1 基本读取 84 4.3.2 计时 85 4.3.3 默读与文件读取 85 4.4 显示数据 86 4.4.1 标准文件描述符 86 4.4.2 重定向错误 87 4.4.3 临时重定向 88 4.4.4永久重定向 88 4.4.5 在脚本中重定向输入 89 4.5 创建自己的重定向 90 4.5.1 创建输出文件描述符 90 4.5.2 重定向文件描述符 90 4.5.3 创建输入文件描述符 91 4.5.4 创建读取/写入文件描述符 91 4.5.5 关闭文件描述符 92 4.5.6列出开发文件描述符 92 4.5.7禁止命令输出 94 4.6 使用临时文件 94 4.6.1 创建本地临时文件 94 4.6.2 在/temp中创建临时文件 95 4.6.3 创建临时目录 96 4.6.4 记录消息 96 第5章 脚本控制 97 5.1 处理信号 97 5.1.1 Linux信号回顾 97 5.1.2 生成信号 97 5.1.3捕获信号 99 5.1.4捕获脚本退出 99 5.1.4移除捕获 100 5.2 以后台模式运行脚本 100 5.3 作业控制 102 5.3.1查看作业 102 5.3.2重新启动停止的作业 103 5.4 nice与renice命令 104 5.4.1 nice命令 104 5.4.2 renice命令 104 5.5 定时运行脚本 105 5.5.1使用at命令调度作业 105 5.5.2使用batch命令调 107 5.5.3 调用定期脚本 107 5.6 从头开始 109 5.6.1在启动时启动脚本 109 5.6.2随新shell起启动 109 第6章 创建函数 110 6.1 基本脚本函数 110 6.1.1 创建函数 110 6.1.2 使用函数 110 6.2 返回值 111 6.2.1 默认退出状态 111 6.2.2 使用return命令 111 6.2.3 使用函数输出 112 6.3 在函数中使用变量 112 6.3.1 向函数传递参数 112 6.3.2 在函数中处理变量 113 6.4 数组变量与函数 114 6.4.1 向函数传递数组 114 6.4.2从函数返回数组 115 6.5 函数递归与创建库 116 6.5.1函数递归 116 6.5.2 创建库 116 6.6 在命令行中使用函数 117 6.6.1在命令行创建函数 117 6.6.2在.bashrc文件中定义函数 117 6.7 select命令使用 119 第7章 sed、gawk介绍与正则表达式 120 7.1 sed编辑器 120 7.1.1 在命令行中定义编辑器命令 120 7.1.2 在命令行中使用多个编辑器命令 121 7.1.3 从文件读取编辑器命令 121 7.2 gawk程序 122 7.2.1 gawk命令格式 122 7.2.2 自命令行读取程序脚本 122 7.2.3 使用数据字段变量 123 7.2.4 在程序脚本中使用多个命令 124 7.2.5从文件读取程序 124 7.2.6 在处理数据之前运行脚本 125 7.2.7 在处理数据之后运行脚本 125 7.3 sed编辑器基础知识 126 7.3.1 更多替换选项 126 7.3.2 使用地址 127 7.3.3 删除行 128 7.3.4 插入和附加文本 129
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值