首页 > 系统相关 >shell脚本的简单初识

shell脚本的简单初识

时间:2024-05-27 16:05:08浏览次数:14  
标签:脚本 shell 变量 命令 初识 使用 变量名

  脚本相信大家都不陌生,平时玩游戏遇到的各种辅助软件;你可能要敲上一会的命令,大佬发给你一个文本,运行一下一秒解决。脚本确实帮助了我们很多,今天就来简单的了解一下在Linux中的一个shell脚本。

什么是shell脚本?作用,或者是好处

shell脚本简单来说就是将平时使用的指令按照顺序罗列到文本文件中,在添加一个执行权,放到一个系统能找到的位置,这就是脚本。

作用:

有了它你可以批量处理很多种重复性的操作,避免了人力失误,效率不高的问题。还有能实现免交互的运行,对于实现自动化是有帮助的。

shell脚本编写的规则与执行
  • 编写规范:一个好的脚本一定有是有辅助语句,和良好的阅读性。因为你的脚本要想让别人使用,哪些卡顿的地方要注意提前标识,以免被当作死机处理

    • 使用有意义的变量名和函数名。

    • 缩进以增加代码可读性,通常使用4个空格。

    • 每条命令后加分号,或使用换行。

    • 注释要清晰明了,使用#开头。

    • 避免使用硬编码的值,使用变量或函数代替。

    • 脚本开头指定解释器,如#!/bin/bash。不同的系统有不同的解释器,解释器本质上也是软件,下载之后就能运行对应的脚本,提高了移植性。

执行的方式:
 

  • 执行脚本的方式

    • 调用解释器

      • bash 脚本;dash  脚本;csh  脚本

    • 路径执行

      • ./脚本——绝对路径相对路径都行

        • 前提需要赋予执行权,否则无法执行

    • . 或source

      • source 脚本

        • 直接在当前shell进行

 前两种执行方式会开启一个子shell环境,会消耗一部分资源。如果开的很多,系统资源可能被耗尽,需要根据情况来决定使用哪种方式执行脚本。

还有一个经常用的重定向与管道

  • 重定向与管道

    • 重定向:

      • - 标准输入,默认设备键盘,文件编号为0  --stdin(标准输入)

      • - 标准输出,默认设备是显示器,编号为1,

      • - 标准错误。默认设备是显示器,编号为2,

      • 改变默认输出输入的方向称为重定向

      • 重定向输出:是将命令的标准输出到指定文件中,而不是显示器上,重定向输出使用”>“”>>“分别是覆盖文件和追加文件。

      • 重定向输入:是将命令接收输入的途径改为指定的文件,用”<“操作符。用该操作可避免出现交互式的使用。

        • 例:给定用户密码的免交互

        • vi pass.txt

        • 123456

        • useradd zhangsan

        • passwd --stdin zhangsan < pass.txt

      • 错误重定向:通常使用”2>”来收集错误信息。

    • 管道: 左侧为命令输出结果“|”右侧则将左侧的输出结果执行下一个命令。

    • 例cd / | ls   就是先cd到根目录在执行ls命令

 变量——脚本离不开的东西
  • 变量

    • 计算机变量的自定义:调用储存的内存——绕口,但理解后就会觉得很形象。

    • 定义变量的基本格式:

      • “变量名=变量值”等号两边没有空格,且尽量避免使用特殊字符。

      • 声明变量:用$符 如果变量名称与紧跟的字符容易混淆时需要用${}将变量圈起起到区分边界的作用。

      • ${}用于引起变量

      • $()用于引起命令能进行嵌套例:$(cd /etc) $(ls -l)

      • ``也用于引起命令与$()相同但反引号容易混淆且不能嵌套例:`cd /etc ` ls -l`

      • 不能使用特殊字符

    • 变量的命名规则

      • 变量名只能包含字母、数字和下划线

      • 变量名必须以字母或下划线开头

      • 变量名是区分大小写的

      • 变量名不能使用Shell的保留关键字

        • 保留关键字:类似于ls,cd,pwd,不能用这种方式命名变量名

      • 变量名应尽可能具有描述性

      • 避免使用空格或特殊字符

    • 定义变量的方法:

      • 用“=”号连接变量名与变量

      • read

        • 交互式的方式定义变量

          • -p 加入提示消息提醒用户操作

    • 引用变量的方法

      • “变量”

        • 双引号引起变量

        • 该方式可以调用字符串中带$的字符

          • 例:name=www echo $name www echo “my$name” mywww

      • '变量'

        • 单引号引起变量

        • 用该方式会将字符串中的$做原样输出

      • ${变量}

        • 方便清晰

      • $()

        • 只能调用命令

          • 且能嵌套

      • ··

        • 只能调用命令

          • 不能嵌套

    • 变量的作用范围

      • 全局变量

        • 文件/etc/profile

          • 在任意子shell中都生效

            • set查看

              • 修改立即生效,可执行该脚本

        • 全局变量尽量使用大写

      • 局部变量

        • 例:用户下的.bash_profile

          • 只在当前shell生效

        • 局部变量尽量使用小写

        • 用export可将局部变量导出为全局变量

        • 若在脚本中不想将变量设置为全局变量可添加local

    • 数值变量的运算

      • 数值与运算符之间必须有空格

      • expr

        • 整数运算器

          • - + 加法运算

          • - -减法运算

          • - \*乘法运算 前面要加转义符

          • - /除法运算

          • - %求模运算·(取余运算)

    • 特殊的shell变量

      • 环境变量

        • /etc/profile

      • 只读变量

        • readonly $变量

          • 不允许被重新赋值

      • 位置变量

        • $1 $2 $3 ....

      • 预定义变量

        • 由bash预先定义好的变量

          • 如$PASH $HOME

      • 以下是常用的特殊变量,

      • $# 传送给命令Shell的参数个数

      • $- 在Shell启动或使用set命令时提供选项

      • $? 上一条命令执行后返回的值

      • $$ 当前shell的进程号

      • $! 上一个子进程的进程号

      • $@ 所有的参数,每个都用双括号括起 以遍历的形式,(遍历,扫描到一个数据,显示一次,在扫描在显示。

      • $* 所有参数,用双括号括起

      • $n 位置参数值,n表示位置

      • $0 当前shell名 路径

到此为止呢,对于脚本,对于变量会有浅显的认识,可以尝试自己编写安装源码包的脚本,来实践 ,如果有疑问欢迎留言,看到会解答。

标签:脚本,shell,变量,命令,初识,使用,变量名
From: https://blog.csdn.net/Q7758521adc/article/details/139198245

相关文章

  • 【SHELL】命令使用笔记
    按行拼接两个文件awk'NR==FNR{a[NR]=$0;next}{print$0,a[FNR]}'B.txtA.txt>C.txt注:文件格式须为unix,dos格式拼接后会跨行 在指定格式的文件中查找字符串在指定格式的文件中查找字符串grep-nr"string"--include=*.{c,cpp,h}在排除指定格式的文件中查找字符串grep......
  • 40道Bash Shell高频题整理(附答案背诵版)
    1.简述如何调试Shell脚本?调试Shell脚本是一个帮助开发者识别和修正脚本中错误的过程。Bash提供了多种方式来调试脚本,其中包括:使用-x选项:通过在运行脚本时使用-x选项,Bash会在执行每一行命令之前打印该命令。这有助于查看脚本的执行流程和变量的值变化。例如,如果有......
  • shell编程之循环语句与函数
    一、for循环语句        在实际工作中,经常会遇到某项任务需要多次执行的情况,而每次执行时仅仅是处理的对象不一样,其他命令相同。例如,根据通讯录中的姓名列表创建系统账号,根据服务器清单检查各主机的存活状态,根据IP地址黑名单设置拒绝访问的防火墙策略等。    ......
  • Shell编程规范与变量
    一、Shell脚本概述        在一些复杂的Linux维护工作中,大量重复性的输入和交互操作不仅费时费力,而且容易出错,而编写一个恰到好处的Shell脚本程序,可以批量处理、自动化地完成一系列维护任务,大大减轻管理员的负担。1.1 Shell的作用        Linux系统......
  • Shell 编程之条件语句
    条件测试操作        Shell环境根据命令执行后的返回状态值($?)来判断是否执行成功,当返回值为0时表示成功,否则(非0值)表示失败或异常。使用专门的测试工具——test命令,可以对特定条件进行测试,并根据返回值来判断条件是否成立(返回值为0表示条件成立)。使用test测......
  • Lua调用其他脚本
    Lua是一种轻量级的脚本语言,它通常用于嵌入式系统和游戏开发中。Lua本身并没有直接访问其他脚本文件的功能,但是你可以编写一个Lua脚本来加载和执行其他Lua脚本文件。以下是一些基本的方法来在Lua中访问和执行其他脚本:require:这是最常用的方法来加载其他Lua脚本。require函数......
  • 【MySQL】初识数据库-CRUD
    ❣博主主页:33的博客❣▶️文章专栏分类:MySQL◀️......
  • linux shell中移除文件的后缀、前缀
     001、[root@PC1test2]#a="a.csv.map.txt"[root@PC1test2]#echo$aa.csv.map.txt[root@PC1test2]#echo${a%.*}a.csv.map[root@PC1test2]#echo${a%%.*}a 。 002、[root@PC1test2]#ls[root@PC1test2]#a="a.csv.map.txt"[root@......
  • Linux shell 变量中何时需要使用花括号
     001、简单测试[root@PC1test2]#ls[root@PC1test2]#a="abc"##生成一个测试变量[root@PC1test2]#echo$a##输出变量方式1abc[root@PC1test2]#echo${a}##输出变量方式2abc[root@PC1test2]#echo$axxx##......
  • shell中的命令
    shell中的特殊字符1.通配符:    *:匹配任意长度的字符串   ?:匹配任意一个字符   []:匹配方括号内任意一个字符   [1-4]:匹配方括号内范围内的一个字符   [^]:匹配除了方括号内的任意一个字符   2.管道:    |:将一条命令的输出作为另外一条命令......