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

相关推荐
杨云龙UP15 小时前
ODA服务器RAC节点2/u01分区在线扩容操作记录及后续处理流程(Linux LVM + ext4 文件系统在线扩容操作手册)_20260307
linux·运维·服务器·数据库·ubuntu·centos
jyfool1 天前
Ubuntu 远程桌面配置踩坑实录:从 TightVNC 到 x11vnc 的折腾之旅
linux·运维·ubuntu
安当加密1 天前
基于 RADIUS 的 Linux 服务器双因子认证:从 FreeRADIUS 到轻量级 ASP 方案的演进
linux·运维·服务器
66清小风1 天前
服务器安装操作系统报X or window manager startup failed, falling back to mode
linux·kylin
double2li1 天前
linux/unix 段错误捕获【续】
linux·运维·服务器·网络·unix
allway21 天前
Linux / Unix last Command Examples
linux·运维·unix
御坂10101号1 天前
「2>&1」是什么意思?半个世纪的 Unix 谜题
java·数据库·bash·unix
嘿嘿嘿x31 天前
MobaXterm 成功连接 Ubuntu 虚拟机
linux·运维·ubuntu
万能菜道人1 天前
多次连接共享内存大小不一致在win和linux的区别
linux·运维·服务器
嵌入式×边缘AI:打怪升级日志1 天前
2.3.1 Linux 命令行介绍:Shell、PATH与第一个Hello程序
linux·运维·服务器