shell脚本学习

SHELL

SHELL

SHELL
分区 /boot 200M
/swap 2G
/ 全部

1.关闭防火墙 service iptables stop //服务关闭
2.chkconfig iptables off //关闭开机自启
3.变量 $a 取出a的值。
4.pwd $USER $HOME $PWD S H E L L 5. r e a d o n l y i = 5 ; / / 定 义 只 读 变 量 。 6. e c h o [ [ a + b ] = = = = = b ] = = = = = ( ( a + a + b ) ) 7. SHELL 5.readonly i=5;//定义只读变量。 6.echo [[a+b] =====b]=====((a+a+b)) 7. SHELL5.readonlyi=5;//6.echo[[a+b]=====b]=====((a+a+b))7.N 表示脚本的第几个参数 $3就是脚本传递的第三个参数。
8. $*====所有的参数 每次取一个
9. @ = = = = 所 有 的 参 数 “ @ ====所有的参数 “ @====@" 单独对待每一个参数。
10. $? 上一条指令的状态 0为正确。
$# 参数个数。
数值比较 -lt 小于(less than) -le小于等于(less equal)
-eq 等于(equal) -gt大于(greater than)
-ge大于等于(greater equal) -ne不等于(no equal)
判断文件属性 -r(read) -w(write) -x(execute)
判断文件 -f -d(文件夹) -e(存在existence)
11.流程控制if else
if[ 条件判断 ];then
程序
fi;
if [ -e b.sh ]
then
cat b.sh
else
echo ccccc
fi
12.case语句
case $变量名 in
“值1” 执行语句
“值2”执行语句
esac
#!/bin/bash
case $1 in
“1”)
echo 11111
;;
“2”)
echo 11111
;;
*)
echo KaTeX parse error: Expected 'EOF', got '#' at position 76: … 程序 done #̲!/bin/bash s=0…[ s + s+ s+i]
done
echo $s
for 变量 in 值1 值2 值3 …
do
程序
done
for i in aaa bbb ccc
do
echo $i
done
14.while循环
while [ 判断式 ]
do
程序
done
#!/bin/bash
s=0;
i=0;
while [ i − l e 100 ] d o s = i -le 100 ] do s= ile100]dos=[ s + s+ s+i]
i= [ [ [i+1]
done
echo $s
15.控制台输入
read -p “提示” -t(time) i //将控制台输入的值给变量i
16.函数(必须先定义再执行) 函数末尾的return 是返回的函数执行状态码
#!/bin/bash
function aaa()
{
echo abcd

}
aaa

11.流处理cut 注意空格
cut -f 取第几列
-d 指定分隔符
-c 指定具体的第几个字符
ifconfig | grep inet | cut -d “t” -f 2 | cut -d “n” -f 1 | cut -d " " -f 2
12.sed a 新增一行 d 删除 s 查找替换
ifconfig | sed ‘2a123’ //在第二行后追加一行123
sed ‘1,3d’ //删除第1,2,3行
13.正则表达式
\ 转义
^ 匹配行首
$ 匹配行尾
* 表示上一个子式匹配0次或多次 。贪心匹配
. 匹配任意字符串
[] 匹配某个范围
sed ‘/reg/’ 指定范围 指定操作 -e 指令操作 -i 直接编辑文件
ifconfig | sed ‘/inet/aXXXX’
ifconfig | sed ‘1,3s/inet/XXXX/g’
sed ‘4,$d’ if.conf
sed -i ‘1,3d’ if.conf 直接删除文件前三行。
先写范围 (用正则表达式)再写操作(增删改)
-e 指令模式上操作 -i 直接编辑更改源文件
a 增 d 删 s 查找替换
14.awk
将文件逐行读入,并以空格默认分隔符号进行切片再进行分析处理
awk[选项参数] pattern1{action1} parrern2{action2}
cat /etc/passwd | awk ‘/^atguigu/{print}’
cat /etc/passwd | awk ‘/^atguigu/{print} /’^ssh’/{print}’
-F 指定输入文件分隔符 -v 定义一个变量
cat /etc/passwd | awk -F : ‘/^atguigu/{print $1}’ //将匹配到的行按照:拆成数组 打印第一个
cat /etc/passwd | awk -F : ‘BEGIN{print “BEGIN”}{print}END{print “end”}’
FILENAME 文件名
NR 已读取的额记录数
NF 浏览记录的域的个数。(切割后列的个数)
cat /etc/passwd | awk -F : ‘{print "Filename=“FILENAME”,NF=“NF”,NR="NR}’

cat /etc/passwd | awk -F : -v sum=0 '{sum=sum+1}END{print sum}'

cat /etc/passwd | awk -F : 'BEGIN{sum=0} {sum+=$3} END{print sum}'
 cat /etc/passwd | awk -F : 'BEGIN{sum=0} {sum+=$3;print $3"  " sum} END{print sum}'
 cat /etc/passwd | awk -F : 'BEGIN{sum=0}  /^a/{print;sum+=$3} END{print sum}'

15.sort
-n 依照数值大小排序 -r 相反顺序 -t 设置排序时分隔符 -k 指定排序的列
cat /etc/passwd | grep ^a | sort -t : -k 3 -n
习题
1.打印空行行号 cat file | awk ‘/^$/{print NR}’
2.计算总成绩 cat file | awk -F " " ‘BEGIN{sum=0}{sum+=$2}END{print sum}’
3.排序 cat file | sort -nr
4. grep -r ‘bash’ ./

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值