shells脚本
1.shells 放在etc文件夹下
切换到etc下后使用 ll | grep shells可以看到shells文件夹
2.在家目录下创建shells文件夹同时创建hellow.sh文件
使用vim命令编辑文件
#!/bin/bash
echo "This is the first Linux shells"
3.运行文件(没有配置环境变量)
bash hellows.sh
或者sh hellow.sh
修改文件权限成为可执行文件
chmod u+x hellow.sh
./hellow.sh可以运行
hellow.sh不可以
配置环境变量
先配置环境变量
export PATH:$PATH=/root/shells
hellow.sh可以运行
4.数据类型
数据类型都为字符串,不需要加“ ”,但是两个字符间有空格需要“”或者’'引起来
A=5
echo $A 输出A的值
unset A 销毁A的值
readonly B=3 设置B变量只能读,不能unset
使用vim编译hellow.sh添加echo $D
然后 D=123456
./hellow.sh 不能打印123456
. hellow.sh 可以打印123456
使用export D后将D提升为系统变量
特殊变量 $n
touch paratmeter.sh
vim paratmeter.sh
#!/bin/bash
echo '==========$n=========='
echo $1
echo $2
echo $3
./paratmeter.sh aa bb cc
使用双引号"========$1========="
n是一个变量
$#获取传入参数的个数
vim parament.sh
#!/bin/bash
echo $1
echo $2
echo $3
echo '====$#========'
echo $#
$* 和 $@的相同与不同
$@,$*都可以输出传入的所有参数
$@是将每个参数当成独立的
$*是将每个参数当成一个整体
echo $?判断是否命令执行成功,返回0成功
使用运算符,下边的常用
echo $(((3+2)*5))
echo $[(3+2)*5]
判断
-lt < -le <=
-eq = -gt >
-ge >= -ne!=
使用[ 1-le 2 ]
[ 1 -le 2]
echo $? 输出0为false
判断是否为可读文件,-r 可读 -f 是否为文件 -w 读 -e是否存在 -d目录
使用命令完成测试前先修改lt.sh的权限为u+x,只可以传一个参数,then前必须没有空格
测试
case选择
测试
for循环计算1+100
第二种for区别,当$* 和 $@不加引号时
测试可以传入多个参数
加引号“*”是当成整体
while循环计算1+…+99
read键盘录入
设置 -t 10 设置10秒后关闭键盘录入
查看文件路径,后面再加上.sh输出结果就可以去掉.sh
dirname 返回文件路径
自定义函数
和超过255后重新算,超过部分从0开始
Shells工具Cut切割
配合管道符切
切环境变量切ifconfig
Awk
使用awk切割passwd中root的第7列,^表示以xxx开头,然后用//包裹起来
使用awk切割passwd中root的第1列和第7列
切割第1列和第7列,并在列头添加 user ,shells和列尾添加aaa,bbb
将用户的id加1
NR记录行数NF浏览的列数,NF表示被切开的列数(最后一列)
使用awk切割ifconfig
使用awk匹配空行
Sort排序,已第三列数据为根据, -nrk为降序,nk 为升序
Wc -l passwd 统计行数
Wc -w passwd 统计单词数(不准)
Wc -m passwd 统计字符数
Wc -c passwd 统计字节数
正则表达式
1.^xx 以xx开头的
2.Y$ 以y结尾的
3.^$ 匹配空行
4.R…x 表示以R开头,x为结尾中间有两个字符的所有行
5.101表示可以是没有或者有多个0,和*前的一个字符有关
6…*表式任意字符
7.特殊字符[6 ,8 ]表示 6或者8
8.[a-z]表示a-z的一个字符
9.[a-z]*表示匹配任意字符
10.[a-c,e-f]表示匹配a-c 或者e-f其中的任意字符
11.\使$等特殊符号失效
查看当前文件中内容含有love的文件的名称