ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

shell 脚本概括 实例

2022-05-10 16:02:07  阅读:218  来源: 互联网

标签:shell 实例 概括 echo cut sed print root


一、shell概述
1、什么是shell
shell命令解释器
界面输入命令,将命令翻译0101,让内核看得懂,内核将0101翻译成abcd命令结果。
windows也有shell 桌面也就是 以上同理,专业叫图形界面
shell分类:
Bash 可移至行好 编辑性好 快捷键好

二、shell脚本的执行方式
1、echo命令
选项:
-e 支持反斜线控制的字符转换
-n 不换行 echo -n '11111'
-e支持的控制字符:
\a 输出警告音
\n 换行符
\t 制表符,也就是tab键

[root@localhost ~]# echo -e "\x61" #16进制 输出a
2、shell脚本的执行方法:
vim hello.s
#!/bin/bash
#the first program
# author:lihong (E-mail: 1308714598@qq.com)

echo -e "lihong zhen shuai"

shell脚本
注释
# 开头的就是注释 #!/bin/bash
变量
运行shell时候,会同时勋在三种变量
局部变量:局部变量在脚本或命令定义,仅在当前shell实例中有效


 


echo $HOME 家目录
echo $PWD 当前目录
echo $shell 默认解释器
echo $USER 当前用户

定义变量:
[root@localhost ~]# a=1 =前后没有空格
[root@localhost ~]# echo $a
1
撤销变量:
echo $a

字母数字下换线 不能数字开头 等号两边不能有空格
在bash中 变量默认都是字符串类型 无法直接进行数值运算
变量值有空格 需要使用双引号或者单引号括起来

提升全局变量:
[root@localhost ~]# a=1
[root@localhost ~]# export a
[root@localhost ~]# vim hello.sh
[root@localhost ~]# bash hello.sh
lihong zhen shuai
1
========================================
read读取控制台
read (选项) (参数)
-p:指定读取时的提示符
-t:输入时候的指定时间
参数:
变量:指定读取值的变量名
案例:
提示7秒内,读取控制台输入的名称
vim read.sh
#!/bin/bash
read -t 7 -p "请在7秒内输入您的姓名:" name
echo $name

==============================================

函数
系统函数
1.basename基本语法:
basename [string / pathname] [suffix] (功能描述:bashename 命令会删除所有的前缀包括最后一个(‘/’)字符,然后将字符串显示出来

案例:
截取该******路径下的文件名称
(1) basename /root/22.4.4.txt
结果显示:22.4.4.txt
(2) basename /root/22.4.4.txt .txt
结果显示:22.4.4

2.dirname基本语法
dirname 解释:返回路径
dirname /root/22.4.4.txt
结果返回:/root/

 

自定义函数:
1.节本语法
[function] funname[()]
{
Action;
[return int;]
}
funname

touch sum.sh
vim sum.sh
#!/bin/bash
定义函数 定义名称()
{
求和内容;

}

read 输入相加的数字
调用函数

#!/bin/bash
functon sum()
{
s=0;
s=$[$1+$2]
echo $s
}
read -p "请输入第一个参数:" p1
read -p "请输入第二个参数:" P2
sum $p1 $p2

==============================
shell工具(重点)
cut的功能就是"剪" 截取自己想要的文件
基本语法:
cut [选项参数] filename
选项参数:
-f 列号,提取第几列
-d 分隔符,按照指定分隔符分割列

案例:
数据准备
vim cut.txt
lihong
baoll
li hong
ma wen hua
ha ha

1.切割所有数据的第一列
cut -d " 空格 " -f 1 cut.txt
2.切割所有数据的第列和第三列
cut -d " " -f 2,3 cut.txt
3.cut.txt文件中切割出ma
cat cut.txt | grep ma | cut -d " " -f 1
4.选取系统PATH变量值,第二个":" 开始的所有路径
echo $PATH
echo $PATH | cut -d : -f 3- #(3-:表示第三个往后,包括第三个)

============================
sed
基本用法:
sed [选项参数] 'command' filename

选项参数说明:
-e 有多个命令执行的加上 -e

命令功能描述:
a 新增
d 删除
s 查找并替换

案例:
数据准备
vim sed.txt
lihong
baoll
li hong
ma wen hua
ha ha

1)
将meinv 加入sed.txt第二行下打印
sed "2a meinv" sed.txt
2)
删除sed.txt文件所有包含li的行
sed "/li/d" sed.txt
3)
将sed文件中li 替换成 666
sed "s/li/666/g" sed.txt
4)将第二行删除并将第二行li换成b
[root@localhost ~]# sed -e "2d" -e "s/li/b/g" sed.txt


awk
基本语法:
awk 正则条件 执行内容
选项参数:
-F 指定输入文件拆分隔符
-v 复制一个用户定义变量
案例:
数据准备:
cp /etc/passwd ./

1)
搜索passwd文件 以root关键字开头的所有行,并射出该行第7列
awk -F : '/^root/ {print $7}' passwd

2)
搜索passwd文件以root关键字开头的所有行,并且输出该行的第1列和第7列,中间以","分割
[root@localhost ~]# awk -F : '/^root/ {print $1 "," $7}' passwd
root,/bin/bash

3)
打印passwd第一列和第3列以','分割,开头添加"li" 最后一行添加"hong"
awk -F : 'BEGIN{print "li"} {print$1","$3} END{print "hong"}' passwd
awk -F : 'BEGIN{print "li"} END{print "hong"} {print$1","$3}' passwd

4)
将passwd文件中的用户id增加数值1并输出
awk -F : -v i=1 '{print $3+i}' passwd

5)
awk的内置变量
变量说明
FILENAME (filename) 文件名
NR(nr) 已读的记录数
NF(nf) 浏览记录的域的个数(切割后,列的个数)
awk -F : '{print FILENAME "," NR "," NF}' passwd
passwd,1,7 (文件名,行数+1+1+1+1,共计列数)
passwd,2,7
passwd,3,7
passwd,4,7
passwd,5,7
passwd,6,7
......
......
......

6)截取ip
[root@localhost ~]# ip a | grep eno16777736 | cut -d : -f 2 | grep inet | awk -F " " '{print $2}'
192.168.1.20/24

7)打印sed.txt空行的行号
awk '/^$/ {print NR}' sed.txt
5

 

 

 

 

 

 


 

标签:shell,实例,概括,echo,cut,sed,print,root
来源: https://www.cnblogs.com/honglili/p/16253924.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有