Bash Shell 脚本编程入门详解

目录

[1. 创建和执行 Bash Shell 脚本](#1. 创建和执行 Bash Shell 脚本)

[什么是 Shell 脚本](#什么是 Shell 脚本)

脚本编写工具推荐

指定命令解释器(Shebang)

[2. 执行 Bash Shell 脚本](#2. 执行 Bash Shell 脚本)

设置执行权限

运行脚本的三种方式

[3. 对特殊字符加引号](#3. 对特殊字符加引号)

特殊字符转义方法

转义示例详解

引号类型区别

总结


1. 创建和执行 Bash Shell 脚本

什么是 Shell 脚本

Shell 脚本是一种包含命令列表的可执行文件,可以自动化执行系统管理任务。通过将多个 Linux 命令组合在一起,并加入编程逻辑,可以解决复杂的实际问题。

示例解析:

bash 复制代码
#!/bin/bash
echo "Hello, World"
date
  • 这是一个最简单的 Shell 脚本

  • 第一行是指定解释器的特殊指令

  • 后面是依次执行的命令

脚本编写工具推荐

使用高级文本编辑器(如 vim 或 emacs)的好处:

  • 语法高亮显示

  • 自动识别常见错误

  • 帮助检查引号、括号匹配等问题

指定命令解释器(Shebang)

bash

复制代码
#!/bin/bash
  • #! 称为 she-bang 或 hash-bang

  • 必须是脚本的第一行

  • 告诉系统使用哪个解释器来执行脚本

  • 对于 Bash 脚本,使用 /bin/bash


2. 执行 Bash Shell 脚本

设置执行权限

bash 复制代码
chmod +x script.sh
chmod 755 script.sh
  • 脚本必须有执行权限才能运行

  • 使用 chmod 命令修改权限

  • 使用 chown 可以设置特定用户或组的权限

运行脚本的三种方式

方式一:使用绝对路径

bash 复制代码
/home/user/bin/hello

方式二:使用相对路径

方式三:通过 PATH 环境变量

bash 复制代码
hello

注:path环境变量也是个路径,你光给个名字时系统默认会去path环境变量里找这个文件

感兴趣可以查看:Linux PATH 环境变量简单介绍-CSDN博客

PATH 环境变量示例:

bash 复制代码
[user@host ~]$ echo $PATH
/home/user/.local/bin:/home/user/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin

查找命令位置:

bash 复制代码
[user@host ~]$ which hello
~/bin/hello

重要提示:

  • 避免使用与系统命令相同的脚本名

  • PATH 会执行找到的第一个匹配命令


3. 对特殊字符加引号

特殊字符转义方法

Bash 中有特殊含义的字符需要转义:

  • 反斜杠 \:转义单个字符

  • 单引号 '':按字面解释所有字符

  • 双引号 "":允许变量替换,阻止其他扩展

转义示例详解

示例1:转义 # 符号

bash 复制代码
[user@host ~]$ echo # not a comment
# (这里只输出空行,因为#后面都被视为注释)

[user@host ~]$ echo \# not a comment
# not a comment
  • \# 让 # 不被解释为注释符号

示例2:多种转义方式

bash 复制代码
[user@host ~]$ echo \# not a comment \#
# not a comment #

[user@host ~]$ echo '# not a comment #'
# not a comment #
  • 单引号内的所有字符都按字面意思处理

引号类型区别

双引号的特点:

bash 复制代码
[user@host ~]$ var=$(hostname -s); echo $var
host
[user@host ~]$ echo "***** hostname is $var *****"
***** hostname is host *****
  • 允许变量替换 $var

  • 允许命令替换 $(command)

  • 阻止文件名扩展(globbing)

单引号的特点:

bash 复制代码
[user@host ~]$ echo 'Hostname is $var'
Hostname is $var
  • 所有字符都按字面意思处理

  • 不进行变量替换

  • 不进行命令替换

混合使用示例:


总结

Shell 脚本编程是系统管理的重要技能,通过本文介绍的四个核心概念:

  1. 脚本创建:理解 shebang 和编辑器选择

  2. 脚本执行:掌握权限设置和运行方式

  3. 字符转义:学会处理特殊字符

  4. 输出处理:使用 echo 和重定向

相关推荐
一路往蓝-Anbo2 分钟前
【第05期】数据的微观世界 (五) —— 浮点数 vs 定点数:MCU的数学课
linux·stm32·单片机·嵌入式硬件·物联网
G_H_S_3_3 分钟前
【网络运维】企业级监控平台Zabbix:部署与实践指南
linux·运维·网络·zabbix
小周学学学8 分钟前
Vcenter Auto Deploy安装与使用
linux·运维·服务器
微爱帮监所写信寄信38 分钟前
微爱帮监狱写信寄信工具服务器【Linux篇章】再续:TCP协议——用技术隐喻重构网络世界的底层逻辑
linux·服务器·开发语言·网络·网络协议·小程序·监狱寄信
VekiSon1 小时前
Linux网络编程——IO多路复用
linux·运维·网络
旖旎夜光1 小时前
Linux(3)(上)
linux·学习
zhuzewennamoamtf2 小时前
Linux Regmap API寄存器映射抽象化
linux·运维·服务器
Joker 0072 小时前
Linux nohup命令实战指南
linux·运维·wpf
大聪明-PLUS2 小时前
管理 Linux 内核模块
linux·嵌入式·arm·smarc
秋邱2 小时前
Java面向对象进阶实战:用工厂模式+策略模式优化支付系统
java·bash·策略模式