介绍
在本实验中,你将学习如何在 Linux 中使用 Shell 变量。Shell 变量对于在脚本中存储和操作数据至关重要。它们可以保存各种类型的值,例如数字、字符或字符串。本实验将引导你完成 Shell 变量的创建、引用和使用,为你的 Shell 脚本编写打下坚实的基础。
创建 Shell 变量
Shell 变量是通过使用 = 符号为其赋值来创建的。让我们从创建一个定义了一些变量的简单 Shell 脚本开始。
在你的 WebIDE (VS Code) 中打开终端。
在
/home/labex/project目录下创建一个名为variables.sh的新文件:touch /home/labex/project/variables.sh在 WebIDE 中打开
variables.sh文件并添加以下内容:#!/bin/bash PRICE_PER_APPLE=5 MyFirstLetters=ABC greeting='Hello world!' echo "Price per apple: $PRICE_PER_APPLE" echo "My first letters: $MyFirstLetters" echo "Greeting: $greeting"在这个脚本中,我们创建了三个变量:
PRICE_PER_APPLE:一个整数变量MyFirstLetters:一个字符串变量greeting:一个包含多个空格的字符串变量
保存文件。
为脚本添加可执行权限:
chmod +x /home/labex/project/variables.sh运行脚本:
./variables.sh你应该会看到以下输出:
Price per apple: 5 My first letters: ABC Greeting: Hello world!请注意,当使用单引号定义变量且在 echo 语句中不加引号时,
greeting变量中的额外空格在输出中得到了保留。
引用 Shell 变量
在引用 Shell 变量时,有几种情况需要使用特殊的语法。让我们来探索这些案例。
在 WebIDE 中打开
variables.sh文件。将文件内容替换为以下内容:
#!/bin/bash PRICE_PER_APPLE=5 MyFirstLetters=ABC greeting='Hello world!' ## 转义特殊字符 echo "The price of an Apple today is: \$HK $PRICE_PER_APPLE" ## 避免歧义 echo "The first 10 letters in the alphabet are: ${MyFirstLetters}DEFGHIJ" ## 保留空白字符 echo $greeting echo "$greeting"保存文件。
运行脚本:
./variables.sh你应该会看到以下输出:
The price of an Apple today is: $HK 5 The first 10 letters in the alphabet are: ABCDEFGHIJ Hello world! Hello world!注意其中的区别:
- 第一行中对
$符号进行了转义,以便将其作为普通字符打印。 - 第二行使用花括号
{}来明确界定变量名的范围。 - 最后两行展示了在引用包含空格的变量时,使用引号与不使用引号的区别。
- 第一行中对
命令替换
命令替换允许你将命令的输出作为变量的值。这可以通过将命令包裹在 $() 或反引号(``)中来实现。
在 WebIDE 中打开
variables.sh文件。在文件末尾添加以下内容:
## Command substitution CURRENT_DATE=$(date +"%Y-%m-%d") echo "Today's date is: $CURRENT_DATE" FILES_IN_DIR=$(ls) echo "Files in the current directory:" echo "$FILES_IN_DIR" UPTIME=$(uptime -p) echo "System uptime: $UPTIME"保存文件。
运行脚本:
./variables.sh你应该会看到类似以下的输出(实际值取决于你的系统状态):
Today's date is: 2023-08-16 Files in the current directory: variables.sh System uptime: up 2 hours, 15 minutes在这个例子中:
$(date +"%Y-%m-%d")执行date命令并捕获其输出。$(ls)执行ls命令并捕获其输出。$(uptime -p)执行带有-p选项的uptime命令并捕获其输出。
算术运算
Shell 变量也可以用于算术运算。Bash 提供了 $((expression)) 语法来执行数学计算。
在
/home/labex/project目录下创建一个名为arithmetic.sh的新文件:touch /home/labex/project/arithmetic.sh在 WebIDE 中打开
arithmetic.sh文件并添加以下内容:#!/bin/bash X=10 Y=5 ## Addition SUM=$((X + Y)) echo "Sum of $X and $Y is: $SUM" ## Subtraction DIFF=$((X - Y)) echo "Difference between $X and $Y is: $DIFF" ## Multiplication PRODUCT=$((X * Y)) echo "Product of $X and $Y is: $PRODUCT" ## Division QUOTIENT=$((X / Y)) echo "Quotient of $X divided by $Y is: $QUOTIENT" ## Modulus (remainder) REMAINDER=$((X % Y)) echo "Remainder of $X divided by $Y is: $REMAINDER" ## Increment X=$((X + 1)) echo "After incrementing, X is now: $X" ## Decrement Y=$((Y - 1)) echo "After decrementing, Y is now: $Y"保存文件。
为脚本添加可执行权限:
chmod +x /home/labex/project/arithmetic.sh运行脚本:
./arithmetic.sh你应该会看到以下输出:
Sum of 10 and 5 is: 15 Difference between 10 and 5 is: 5 Product of 10 and 5 is: 50 Quotient of 10 divided by 5 is: 2 Remainder of 10 divided by 5 is: 0 After incrementing, X is now: 11 After decrementing, Y is now: 4该脚本演示了使用 Shell 变量进行的各种算术运算。
使用环境变量
环境变量是一种对当前 Shell 会话中运行的所有进程都可用的变量。让我们探索一些常见的环境变量以及如何创建我们自己的环境变量。
在
/home/labex/project目录下创建一个名为environment.sh的新文件:touch /home/labex/project/environment.sh在 WebIDE 中打开
environment.sh文件并添加以下内容:#!/bin/bash ## Displaying some common environment variables echo "Home directory: $HOME" echo "Current user: $LOGNAME" echo "Shell being used: $SHELL" echo "Current PATH: $PATH" ## Creating a new environment variable export MY_VARIABLE="Hello from my variable" ## Displaying the new variable echo "My new variable: $MY_VARIABLE" ## Creating a child process to demonstrate variable scope bash -c 'echo "MY_VARIABLE in child process: $MY_VARIABLE"' ## Removing the environment variable unset MY_VARIABLE ## Verifying the variable is unset echo "MY_VARIABLE after unsetting: $MY_VARIABLE"保存文件。
为脚本添加可执行权限:
chmod +x /home/labex/project/environment.sh运行脚本:
./environment.sh你应该会看到类似以下的输出(实际值取决于你的系统配置):
Home directory: /home/labex Current user: labex Shell being used: /bin/zsh Current PATH: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin My new variable: Hello from my variable MY_VARIABLE in child process: Hello from my variable MY_VARIABLE after unsetting:该脚本演示了如何访问现有的环境变量、创建新变量以及删除它们。
总结
在本实验中,你学习了如何在 Linux 中使用 Shell 变量。你探索了变量的创建与引用、使用命令替换将命令输出赋值给变量、使用变量执行算术运算以及操作环境变量。这些技能构成了 Shell 脚本编写的重要基础,在你继续深入学习 Linux 系统时将发挥巨大作用。
本实验的关键收获包括:
- 创建和引用 Shell 变量
- 在不同场景下使用特殊的变量引用语法
- 利用命令替换捕获命令输出
- 使用 Shell 变量执行算术运算
- 操作环境变量
在你继续探索 Linux 和 Shell 脚本的过程中,请记住变量是存储和操作数据的强大工具。尝试在你的脚本中使用它们,使你的代码更加灵活且可重用。



