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

相关推荐
用户31187945592183 小时前
申威 SW-64 架构安装 MySQL 8.0.18 (KY10系统 RPM包) 步骤指南
linux
BS_Li3 小时前
【Linux系统编程】编辑器vim
linux·vim
Ronin3053 小时前
【Linux网络】定制协议
linux·网络·协议·序列化和反序列化·定制协议·tcp网络通信
十五年专注C++开发4 小时前
Drogon: 一个开源的C++高性能Web框架
linux·c++·windows·后端开发·服务器开发
搬砖的小码农_Sky5 小时前
如何从Windows 操作系统登录Linux(Ubuntu)操作系统
linux·windows·ubuntu·远程工作
搬砖的小码农_Sky5 小时前
如何在Linux(Ubuntu)操作系统上查看文件的MD5,SHA256等校验码
linux·运维·ubuntu
码住懒羊羊5 小时前
【Linux】操作系统&进程概念
java·linux·redis
Wang's Blog6 小时前
Linux小课堂: 基于 SSH 的安全文件传输与增量同步机制深度解析之从 wget 到 rsync 的全流程实战
linux·ssh·1024程序员节
yy7634966687 小时前
WPF 之 简单高效的Revit多语言支持方案
java·大数据·linux·服务器·wpf