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

相关推荐
板鸭〈小号〉7 分钟前
进程间关系(linux)
linux·运维·服务器
liu****7 分钟前
18.HTTP协议(一)
linux·网络·网络协议·http·udp·1024程序员节
脏脏a1 小时前
【Linux】冯诺依曼体系结构与操作系统概述
linux·服务器
adnyting2 小时前
【Linux日新月异(三)】CentOS 7软件管理深度指南:从YUM到源码编译
linux·运维·centos
知识分享小能手2 小时前
openEuler入门学习教程,从入门到精通,云计算与 Linux 操作系统概述(1)
linux·云计算·openeuler
励志成为编程高手2 小时前
在ubuntu中创建根文件系统
linux·ubuntu·rootfs
HIT_Weston2 小时前
31、【Ubuntu】【远程开发】内网穿透:反向隧道建立(三)
linux·运维·ubuntu
skywalk81633 小时前
在FreeBSD 14.3上部署轻量级Linux jail环境 仅仅占用10M内存
linux·运维·服务器·虚拟机·轻量化·freebsd·jail
知南x3 小时前
【STM32MP157 异核通信框架学习篇】(10)Linux下Remoteproc相关API (下)
linux·stm32·学习
Tipriest_3 小时前
Linux 环境变量的添加与查看详解
linux·环境变量