目录
[1. 创建和执行 Bash Shell 脚本](#1. 创建和执行 Bash Shell 脚本)
[什么是 Shell 脚本](#什么是 Shell 脚本)
[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 脚本编程是系统管理的重要技能,通过本文介绍的四个核心概念:
-
脚本创建:理解 shebang 和编辑器选择
-
脚本执行:掌握权限设置和运行方式
-
字符转义:学会处理特殊字符
-
输出处理:使用 echo 和重定向