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 和重定向

相关推荐
Jia ming17 分钟前
Linux内存管理三层次解密
linux·运维·服务器
Mr_Xuhhh22 分钟前
C语言字符串与内存操作函数模拟实现详解
java·linux·算法
宴之敖者、36 分钟前
Linux——git和gdb
linux·运维·git
TangDuoduo00051 小时前
【Linux字符设备驱动】
linux·驱动开发
代码游侠1 小时前
学习笔记——Linux内核与嵌入式开发2
linux·运维·arm开发·嵌入式硬件·学习·架构
郝学胜-神的一滴1 小时前
深入Linux网络编程:accept函数——连接请求的“摆渡人”
linux·服务器·开发语言·网络·c++·程序人生
小义_1 小时前
【Docker】知识一
linux·docker·云原生·容器
wefg11 小时前
【Linux】进程地址空间深入理解
linux·运维·服务器
ZHANG13HAO1 小时前
android13 4G网络环境和wifi内网说明
linux·服务器·网络
Linux运维技术栈1 小时前
Magento 2.3.5 宝塔Linux环境完整安装指南(避坑版+图文详解)
linux·运维·服务器