Shell 编程

"学习Shell编程"

Posted by Parker on October 11, 2025

Shell 编程

shell脚本格式

1)脚本文件命名规范:shell脚本文件就是一个文本文件,后缀名建议使用.sh结尾,例如test.sh

(2)首行格式规范: 在脚本文件的第一行通常需要添加脚本文件的声明,指定使用哪种Shell解释器执行该脚本。例如,使用 Bash 解释器的声明为:#!/bin/bash。这个声明称为shebang,用于告诉系统应该使用指定的解释器来执行脚本。

(3)注释格式: 注释用于提供对脚本的说明和解释,不会被解释器执行。在Shell脚本中,注释可以以#开头。

Shell变量

变量的定义和赋值用等号相连,例如:

name="Parker"
huo='red'

在shell脚本中,单引号和双引号的区别:

  • 单引号中的所有字符都被视为普通字符,不会被解释为变量或特殊字符。
  • 双引号中的字符可以被解释为变量或特殊字符。

例如:

name="Parker"
echo "My name is $name"
# 输出:My name is Parker
name="Parker"
echo 'My name is $name'
# 输出:My name is $name

变量的分类

本地变量:

  1. 全局变量: 全局变量在脚本的任何地方都可以访问和使用。
    name="Parker"
    echo "My name is $name"
    # 输出:My name is Parker
    
  2. 局部变量: 局部变量只能在定义它的函数或代码块中访问和使用,函数执行完毕后,局部变量就会被销毁。
    function my_function {
     local name="Parker"
     echo "My name is $name"
    }
    

环境变量:

环境变量是在操作系统中设置的变量,它们可以在Shell脚本中被访问和使用。环境变量通常用于存储系统配置信息、路径等。 在shell脚本中,可以使用env命令查看当前bash进程中的环境变量。 如图: alt text 可以使用export命令将变量导出为环境变量,例如:

export name="Parker"

特殊环境变量:

  • $0:当前脚本的文件名
  • $1-$9:传递给脚本或函数的参数,$1是第一个参数,$2是第二个参数,以此类推。
  • $#:传递给脚本或函数的参数个数。
  • $@:所有传递给脚本或函数的参数,作为一个列表。
  • $?:上一个命令的退出状态码。
  • $$:当前Shell进程的PID(进程ID)。

删除变量: 可以使用unset命令删除变量,例如:

unset name

命令代换

命令代换用于将命令的输出结果赋值给变量或在脚本中使用。命令代换有两种语法形式:

  • 反引号(``):将命令放在反引号中,命令的输出结果会被替换为变量的值。
  • $():将命令放在$()中,命令的输出结果会被替换为变量的值。 例如:
    name=`whoami`
    echo "My name is $name"
    # 输出:My name is Parker
    
    name=$(whoami)
    echo "My name is $name"
    # 输出:My name is Parker
    

条件判断

方括号([])用于条件判断,它可以用于测试变量、文件和表达式的真假。方括号中的表达式需要用空格分隔。 通常用于if语句、while循环和其它需要进行条件判断的地方。

方括号的基本用法