当前位置: 首页 > news >正文

shell脚本1

Shell脚本(一)

  • 概述

Shell的作用:命令解释器,“翻译官”

介于系统内核与用户之间,负责解释命令行

用户登录后默认使用的Shell程序,一般为 /bin/bash

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

Shell类型有:bshbashcshtcshksh

查看系统支持的shell

cat /etc/shells

主要有bashtcshcsh

shell脚本:

也称为shell编程

把符合shell规范的命令或程序,按执行流程编写出来的文本文件

无需编译即可执行

执行脚本就是命令或程序批处理的过程

  • 脚本的执行方式:
  • 编写第一个脚本

[root@localhost ~]#  Vim first.sh

cd /tmp

pwd

ls -l

执行脚本:

Chmod +x first.sh             #给脚本添加执行权限

./first.sh                            #执行当前目录下的first.sh

脚本的执行方式

方式一:

直接写脚本路径执行(需添加X权限),打开子shell执行,不影响父shell环境

./first.sh /root/first.sh

​​​​​​​方式二:

bash/sh 脚本文件路径(可不加X权限),打开子shell执行,不影响父shell环境

bash  ./first.sh           sh ./first.sh

​​​​​​​方式三:. source  脚本文件路径(可不加X权限),在当前shell中执行

.  ./first.sh   (一个点是当前shell第二个点是当前目录)        source  ./first.sh

注:脚本第一行一般会添加 #!/bin/bash声明解释器,主要考虑脚本移植

调试脚本(排错)sh  - x  脚本名称

  • 重定向和管道
  1. 标准输入输出

重定向:改变输入或输出的位置为文件【可以使用 echo 命令,printf 命令,cat 命令(按下 Ctrl + D 提交)

管道:把前一个命令执行的标准输出,作为后一个命令的标准输入

例如:

[root@localhost ~]# grep "bash$" /etc/passwd | awk -F: '{print $1,$7}'

grep "bash$" /etc/passwd:这部分命令使用 grep 工具在 /etc/passwd 文件中搜索以 bash 结尾的行。这个命令将匹配使用 bash 作为默认 shell 的用户。

awk -F: '{print $1,$7}':这部分命令使用 awk 工具来处理 grep 命令的输出。-F: 选项指定了字段的分隔符为 :,因为 /etc/passwd 文件中的每一行都是由冒号分隔的字段组成的。'{print $1,$7}' 告诉 awk 打印每行的第一个字段(用户名)和第七个字段(用户的shell

整个命令的作用是从 /etc/passwd 文件中找出默认 shell bash 的用户,并打印他们的用户名和默认 shell

awk 命令的选项有很多,以下是一些常用选项的简要说明:

  1. -F:指定输入字段的分隔符。
  2. -f:指定包含 awk 脚本的文件。
  3. -v var=value:定义 awk 的变量并赋值。
  4. -W keyword:指定关键字,例如 -W version 可以显示 awk 的版本信息。
  5. -i:在原始文件上进行编辑(类似 -i inplace)。
  6. -o:将输出重定向到文件。
  7. -F regex:指定一个正则表达式作为字段分隔符。
  8. -v:定义一个变量并初始化,例如 -v var=value
  9. -c:检查脚本语法而不运行脚本。
  10. -f scriptfile:从文件中读取 awk 脚本。
  11. -o:输出文件名。

  • 变量
  • 定义变量就是在内存中指定一个空间,并赋值

使用变量的作用就是为了增加脚本或系统管理的灵活性

变量的类型:

自定义变量:        由用户自己定义、修改和使用                     如:ABC

环境变量:             由系统维护,用于设置工作环境                 如:PATH变量

预定义变量:        Bash中内置的一类变量,变量名特定的保留变量

位置变量:             通过命令行给脚本程序传递参数,是一种预定义变量

定义一个新的变量

格式:变量名=变量值

变量名以字母或下划线开头,区分大小写,建议全大写

查看变量的值

格式:echo  $变量名

变量赋值及引用时使用符号

双引号:允许通过$符号引用其他变量值

单引号:禁止引用其他变量值,$视为普通字符

反撇号:命令替换,提取命令执行后的输出结果

$():命令替换,命令嵌套是可替代反撇号

${}:引用变量,用于区分变量名与紧跟其后的字符串

从键盘输入内容为变量赋值

格式: read  [-p  "提示信息"]  变量名

变量可以参与整数运算

格式:expr  变量1   运算符  变量2  [运算符 变量3]

加法运算:+

减法运算: -

乘法运算: \*

除法运算: /

求模(取余)运算: %

环境变量:

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

配置文件: /etc/profile(保存变量)、~/.bash_profile

常见的环境变量:

PWDPATH

USER SHELLHOME

预定义变量:

$0(脚本名自身)、$1-$9(位置变量)、$?(上一个命令执行状态返回值)、$*(参数内容)、$#(位置参数的个数)

举例:

Vim test1.sh

echo $0

echo $1

echo $3

echo $*

echo $#

./test1.sh a b c d e f

相关文章:

  • SwiftUI 常用控件简介
  • Hi3518E官方录像例程源码流程分析(五)
  • PNG透明免抠设计素材大全26000+
  • python异步协程async调用过程图解
  • HTTP 请求头的 key 不区分大小写。
  • FlinkUDF用户自定义函数深度剖析
  • 洛谷5318C语言题解
  • Linux CAN 驱动浅析
  • 私有知识库 Coco AI 实战(二):摄入 MongoDB 数据
  • 【问题解决】本机navicat连接云服务器mysql
  • 工作记录9
  • 【Pandas】pandas DataFrame mod
  • 【复盘】cpu飙升引发的连锁反应
  • JDK 7 Update 0 (64位) 详细Windows 安装指南
  • 每日一题(小白)模拟娱乐篇33
  • Java 拦截器完全指南:原理、实战与最佳实践
  • Chronos - 时间序列预测语言模型
  • Redis从入门到实战先导篇
  • Jsoup、Selenium 和 Playwright 的含义、作用和区别
  • 【C/S通信仿真】
  • 上海市进一步支持汽车置换更新!一图读懂补贴政策实施细则
  • 金融监管总局:支持将上海打造成具有国际竞争力的再保险中心
  • 研讨会|中国古代石刻与历史研究的多重图景
  • 细说汇率 ⑬ 美元进入“全是坏消息”阶段
  • 国际金价冲上3500美元,本月已涨超12%!分析人士提醒:警惕短期多头获利了结
  • 马上评|遭强奸之后私刑报复,不属正当防卫