Linux Shell编程

一、Shell Script介绍
1.概念
Shell脚本是包含一系列命令的文本文件
Shell读取此文件并执行命令
2.应用场景
重复性操作
批量事务处理
自动化运维
定时任务执行
二、第一个Shell脚本
编写第一个Shell脚本test.sh

#!/bin/bash
echo "Hello World"
运行Shell脚本
/bin/sh test.sh
或先给test.sh赋权限
chmod +x test.sh
再运行
./test.sh

三、变量定义及使用

a=1234#不需要声明变量
b=${a/23/'A B C'}#将23转换成A B C
c=a#直接引用变量
d=${!c}间接引用。将a的值赋给d
e=`ls -l`#将命令的结果分配给变量
f=123
g=$(($a+$b))
h=$[$a+$b]

四、预定义变量
$# 命令参数或位置参数的数量
$? 最近一次执行的命令或shell脚本的出口状态
$* 表示所有的位置参数,其值是所有位置参数的值
变 量 是 s h e l l 脚 本 里 面 的 进 程 I D 。 S h e l l 脚 本 经 常 使 用 变量是shell脚本里面的进程ID。Shell脚本经常使用 shellIDShell使变量组织临时文件名,确保文件名的唯一性

echo $0		当前脚本的文件名
echo "$@"	传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同
echo $1		第一个参数
echo $#		传递给脚本或函数的参数个数
echo $*		传递给脚本或函数的所有参数

五、运算符
1.数值关系运算符
-eq 等于
-ne 不等于
-gt 大于
-lt 小于
-le 小于或等于
-ge 大于或等于
2.逻辑运算符
-a或&& 逻辑与
-o或|| 逻辑或
! 逻辑否
3.字符串运算符
= 等于
!= 不等于
-z 判断是否为空
4.文件运算符
-d 判断是否为目录
-e 判断目录或文件是否存在
-f 判断是否为文件
-r 判断文件或目录针对当前用户是否可读
-w 判断文件或目录针对当前用户是否可写
-x 判断文件或目录针对当前用户是否可执行
六、if test
1.test结构

if exit status#返回0表示true,其他的返回值为false
then
if test comparison expression or file tests
then
if [ comparison expression or file tests ]
then
if [[ comparison expression or file tests ]]
then

七、case语句

#!/bin/bash
a=$1
case $a in
1)
echo '${a} is 1'
;;
2)
echo '${a} is 2'
;;
3)
echo '${a} is 3'
;;
4)
echo '${a} is 4'
;;
*)
echo 'nothing is closed'
;;
esac
case ... esac 与其他语言中的 switch ... case 语句类似,是一种多分枝选择结构case 语句匹配一个值或一个模式,如果匹配成功,执行相匹配的命令。

八、while语句

#!/bin/bash
a=1
while [ $a -le 10 ];do echo $a;let a++;
done

九、for循环

for(b=1;$b<=10;b++)
do
echo $b
done

十、TMOUT
在用户输入空闲一段时间后自动断开

#!/bin/bash
TMOUT=3
echo "input your name,you have $TMOUT to type in"
read abc
if [ $? -eq 0 ]
then
echo "your name is $abc"
else
echo "time out"
fi
本书共分五部分,详细介绍了shell编程技巧,各种UNIX命令及语法,还涉及了UNIX下的文字处理以及少量的系统管理问题。本书内容全面、文字简洁流畅,适合Shell编程人员学习、参考。 目 录 译者序 前言 第一部分 shell 第1章 文件安全与权限 1 1.1 文件 1 1.2 文件类型 2 1.3 权限 2 1.4 改变权限位 4 1.4.1 符号模式 4 1.4.2 chmod命令举例 5 1.4.3 绝对模式 5 1.4.4 chmod命令的其他例子 6 1.4.5 可以选择使用符号模式或绝对模式 7 1.5 目录 7 1.6 suid/guid 7 1.6.1 为什么要使用suid/guid 8 1.6.2 设置suid/guid的例子 8 1.7 chown和chgrp 9 1.7.1 chown举例 9 1.7.2 chgrp举例 9 1.7.3 找出你所属于的用户组 9 1.7.4 找出其他用户所属于的组 10 1.8 umask 10 1.8.1 如何计算umask值 10 1.8.2 常用的umask值 11 1.9 符号链接 12 1.9.1 使用软链接来保存文件的多个映像 12 1.9.2 符号链接举例 12 1.10 小结 13 第2章 使用find和xargs 14 2.1 find命令选项 14 2.1.1 使用name选项 15 2.1.2 使用perm选项 16 2.1.3 忽略某个目录 16 2.1.4 使用user和nouser选项 16 2.1.5 使用group和nogroup选项 16 2.1.6 按照更改时间查找文件 17 2.1.7 查找比某个文件新或旧的文件 17 2.1.8 使用type选项 17 2.1.9 使用size选项 18 2.1.10 使用depth选项 18 2.1.11 使用mount选项 18 2.1.12 使用cpio选项 18 2.1.13 使用exec或ok来执行shell命令 19 2.1.14 find命令的例子 20 2.2 xargs 20 2.3 小结 21 第3章 后台执行命令 22 3.1 cron和crontab 22 3.1.1 crontab的域 22 3.1.2 crontab条目举例 23 3.1.3 crontab命令选项 23 3.1.4 创建一个新的crontab文件 24 3.1.5 列出crontab文件 24 3.1.6 编辑crontab文件 24 3.1.7 删除crontab文件 25 3.1.8 恢复丢失的crontab文件 25 3.2 at命令 25 3.2.1 使用at命令提交命令或脚本 26 3.2.2 列出所提交的作业 27 3.2.3 清除一个作业 27 3.3 &命令 27 3.3.1 向后台提交命令 28 3.3.2 用ps命令查看进程 28 3.3.3 杀死后台进程 28 3.4 nohup命令 29 3.4.1 使用nohup命令提交作业 29 3.4.2 一次提交几个作业 29 3.5 小结 30 第4章 文件名置换 31 4.1 使用* 31 4.2 使用? 32 4.3 使用[...]和[!...] 32 4.4 小结 33 第5章 shell输入与输出 34 5.1 echo 34 5.2 read 35 5.3 cat 37 5.4 管道 38 5.5 tee 39 5.6 标准输入、输出和错误 40 5.6.1 标准输入 40 5.6.2 标准输出 40 5.6.3 标准错误 40 5.7 文件重定向 40 5.7.1 重定向标准输出 41 5.7.2 重定向标准输入 42 5.7.3 重定向标准错误 42 5.8 结合使用标准输出和标准错误 43 5.9 合并标准输出和标准错误 43 5.10 exec 44 5.11 使用文件描述符 44 5.12 小结 45 ... ...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值