您的位置:首页 > 房产 > 家装 > Shell脚本

Shell脚本

2024/12/23 5:03:41 来源:https://blog.csdn.net/l25803691121/article/details/140065945  浏览:    关键词:Shell脚本

文本处理工具

tr替换 压缩 删除功能
tr 1 a遇到1换成a
tr -s压缩
tr -d删除
seq 10打印10个数字
seq -s + 100 |bc算出1到100的和
cut切列
cut -d指明分隔符
cut -f获取想要的字段

注意cut 不能将连续的字符当做分隔符

sort排序 默认不是以数字排序
-n执行按数字大小整理
-r倒序显示

uniq 去重 只能将连续的重去掉

shell 的作用

Shell(壳) 是一类程序的总称,用于将人类使用的高级语言转换成机器能看懂的二进制语言,为用户和内核之间的交互提供接口

不同的shell内部指令、运行环境等会有所区别

shell 脚本的组成

解释器:第一行开头“#!/binbash"表示一下代码语句是通过/bin/bash程序来解释执行

注释:以#开头的语句表示为注释信息 #注释

执行的命令:比如echo命令用于输出” “之间的字符串

#!/bin/bashecho  “hello world”
[root@localhost ~]# vim l1.sh
#!/bin/bash
echo "当前日期和时间:"
date
[root@localhost ~]# bash l1.sh
当前日期和时间:
2024年 05月 09日 星期四 09:59:15 CS

执行脚本

1.直接使用 shell 程序来读取脚本命令不需要执行权限

2.使用路径执行 绝对路径 相对路径 需要权限

3.source和 . 点等于source 不需要使用权限

第一和第二钟执行方式不会影响当前环境中bash设置,会开启一个新的bash环境

不推荐使用source 会影响当前bash环境中的配置

脚本错误调试

1.命令错误

命令出错不会影响接下来的命令继续

2.语法错误·

会影响接下来的命令继续

3.逻辑错误

只能自己去筛查代码是否正确

总结:

1.语法错误,会导致后续的命令不继续执行,可以用bash -n 检查错误,提示的出错行数不一定是准确的

2.命令错误,默认后续的命令还会继续执行,用bash -n 无法检查出来 ,可以使用 bash -x 进行观察

3.逻辑错误:只能使用 bash -x 进行

set -e

在脚本的前面输入set -e 一旦出错立即停止

重定向

标准输入/dev/stdin0键盘
标准输出/dev/stdout1显示器
标准错误输出/dev/stdere显示器

重定向操作

类型操作符用途
重定向输入<从指定的文件读取数据,而不是从键盘输入
重定向输出1>将输出结果保存到指定的文件(覆盖原有内容)
>>将输出结果追加到指定的文件尾部
标准错误输出2>将错误信息保存到指定的文件(覆盖原有内容)
2>>标准错误输出结果追加到指定的文件尾部
混合输出&>无论对错都可以重定向将标准输出、标准错误的内容保存到同一个文件中

管道符

将管道符号“|”左侧的命令输出的结果,作呕为右侧命令的输入(处理对象),同一行命令可以使用多个管道。

类型设备文件文件描述编号默认设备
标准输入/dev/stdin0键盘
标准输出/dev/stdout1显示器
标准错误输出/dev/stderr2显示器
  • 标准输入:从该设备接收用户输入的数据
  • 标准输出:通过该设备向用户输出数据
  • 标准错误:通过该设备报告执行出错信息

重定向操作

类型操作符用途
重定向输入<从指定的文件读取数据,而不是从键盘输入
重定向输出1>将输出结果保存到指定文件(覆盖原有内容)
>>将输出结果追加到指定的文件尾部
标准错误输出2>将错误信息保存到指定的文件(覆盖原有内容)
2>>标准错误输出结果追加到指定的文件尾部
混合输出&>无论对错都可以重定向将标准输出、标准错误的内容保存到同一个文件中

Shell脚本变量

作用

Shell 变量用来存放系统和用户需要使用的特定参数(值),而且这些参数可以根据用户的设定或系统环境的变化而相应变化

变量类型

  • 自定义变量:由用户自己定义,修改和使用

  • 特殊变量:环境变量、只读变量、位置变量、预定义变量

自定义变量

变量名等于变量值

例子:

a=10 定义了一个新变量,变量名a,变量值为10

调用变量

echo $cto

echo $变量名

特殊符号

{}确定了变量起始结束的范围,只要有变量就加
“ ”弱引用可以识别变量
’ ‘强引用不识别变量
``反撇 调用命令执行结果 效果与{}$相同

取消变量

unset 变量名

read -p

是一个常用的bash命令,用于从用户输入中读取值并将其存储在变量中

-p 选项用于显示提示信息,提示用户输入

[root@localhost data]# vim mz.sh
#!/bin/bashread -p "请输入你的名字:" name
echo "你好,$name!"
:wq
[root@localhost data]# bash mz.sh
请输入你的名字:lisi
你好,lisi!

将局部变量变为全局变量

局部变量:新定义的变量只在当前的shell环境中有效,当进入子程序或新的shell环境中,局部变量将无法再起作用

全局变量:在新的shell环境中可以继续使用

通过内部命令export将局部变量为全局变量

格式1:export 变量名

格式2:export 变量名=变量值

环境变量

环境变量由系统提前创建,用来设置用户的工作环境

环境变量的全局配置文件

#配置文件位置
/etc/profile 
##修改此文件,全局生效,可用于长期变更或设置环境变量

只读变量

将变量声明为只读(read-only)后,不能再修改变量的值

readonly 变量名 #将变量声明为只读变量

位置变量

$1, $2, $3, … $n 表示命令行参数的位置值

$1 表示第一个参数,$2 表示第二个参数,以此类推。

当n大于9时,需要加上{ },比如第十个位置,要用 ${10}表示

预定义变量

状态变量功能
$*表示所有位置参数的内容堪称一个整体返回
$@表示所有位置参数的内容分割成n份,每份作为一个独立的个体返回 返回所有
$?表示前一条命令执行后的返回状态,返回值为 0 表示执行正确,返回任何非 0值均表示执行出现异常
$#表示命令行中位置参数的总个数
$0表示当前执行的脚本或程序的名称即程序本身
$$当前进程id
$!后台任务最后一个id

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com