位置:首页 > Shell > Linux变量声明方法与语法详解

Linux变量声明方法与语法详解

时间:2026-08-17  |  作者:火苗实验室  |  阅读:0

介绍

在这个实验中,你将学习 Linux shell 脚本中的变量,这些变量对于在脚本中存储和处理数据至关重要。

变量允许你在脚本执行期间临时存储信息,并在整个代码中重复使用这些信息。

理解如何声明和使用变量,是编写 Linux shell 脚本的一项基本技能。

这些知识将帮助你自动化任务、管理配置,并为各种应用程序创建更具动态性的脚本。

在本实验结束时,你将了解如何在 bash 脚本中创建简单变量、整数变量和数组,这些是更高级 shell 脚本技术的基础。

基本变量声明

在这一步中,你将学习如何在 bash 脚本中声明和使用基本变量。

Linux shell 脚本中的变量允许你临时存储数据,并在脚本的后续部分引用这些数据。

创建项目目录

首先,让我们为项目创建一个目录并进入该目录:

mkdir -p ~/project
cd ~/project

创建脚本文件

现在,使用 nano 文本编辑器创建一个名为 variables.sh 的脚本:

nano ~/project/variables.sh

在编辑器中,输入以下内容:

#!/bin/bash

## Declaring a basic variable
BALLOON_COLOR="red"

## Displaying the variable value
echo "The balloon color is: $BALLOON_COLOR"

在这个脚本里,先定义了一个名为 BALLOON_COLOR 的变量,并把它的值设为 "red"

接着,echo 命令会把这个变量的内容打印出来。

如果你是在 nano 里编辑文件,保存时按 Ctrl+O,再按 Enter 确认;退出则按 Ctrl+X

添加执行权限

接下来,给脚本添加可执行权限:

chmod +x ~/project/variables.sh

这条命令的作用很直接,就是让这个文件可以像程序一样被执行。

运行脚本

最后,运行脚本:

./variables.sh

正常情况下,你会看到下面这行输出:

The balloon color is: red

这说明变量已经成功声明,而且只要在变量名前加上 $ 符号,就可以取到它的值。

声明整数变量

这一步会继续演示,如何在 bash 脚本中声明并使用整数变量。

-i 标志的意思是告诉 bash:这个变量要按整数来处理。

做数值运算时,这一点尤其重要。

重新编辑脚本

先重新打开 variables.sh 进行编辑:

nano ~/project/variables.sh

然后把脚本改成下面这样,加入一个整数变量:

#!/bin/bash

## Declaring a basic string variable
BALLOON_COLOR="red"

## Declaring an integer variable
declare -i BALLOON_SIZE=10

## Displaying both variables
echo "The balloon color is: $BALLOON_COLOR"
echo "The balloon size is: $BALLOON_SIZE inches"

## Performing arithmetic with the integer variable
declare -i DOUBLE_SIZE=BALLOON_SIZE*2
echo "Double the size would be: $DOUBLE_SIZE inches"

在这次更新后的脚本里:

  • 原来的字符串变量 BALLOON_COLOR 继续保留
  • 通过 declare -i 语法,新增了一个整数变量 BALLOON_SIZE
  • 同时也演示了,整数变量是怎么参与算术运算的

保存文件时,先按 Ctrl+O,再按 Enter,然后用 Ctrl+X 退出 nano。

运行并查看结果

接着,再次运行脚本:

./variables.sh

运行后,应该会看到这样的输出:

The balloon color is: red
The balloon size is: 10 inches
Double the size would be: 20 inches

-i 这个声明的作用,就是让 bash 把该变量当作整数来处理。

这样后续才能直接进行算术运算。

在脚本里做计数、计算或其他数值处理时,这一点尤其方便。

声明数组变量

接下来,你将学习如何在 bash 脚本中声明和使用数组变量。

数组允许你在一个变量名下存储多个值,这在处理相关数据集合时非常有用。

再次编辑脚本

让我们再次编辑脚本:

nano ~/project/variables.sh

更新脚本以包含一个数组变量:

#!/bin/bash

## Declaring a basic string variable
BALLOON_COLOR="red"

## Declaring an integer variable
declare -i BALLOON_SIZE=10

## Declaring an array variable
declare -a BALLOON_COLORS=("red" "green" "blue" "purple" "yellow")

## Displaying individual variables
echo "The balloon color is: $BALLOON_COLOR"
echo "The balloon size is: $BALLOON_SIZE inches"

## Displaying all array elements
echo "A vailable balloon colors are: ${BALLOON_COLORS[*]}"

## Displaying specific array elements
echo "The first color is: ${BALLOON_COLORS[0]}"
echo "The third color is: ${BALLOON_COLORS[2]}"

## Count of array elements
echo "Number of a vailable colors: ${#BALLOON_COLORS[@]}"

在这个更新后的脚本中:

  • 我们保留了现有的变量
  • 我们使用 declare -a 语法添加了一个数组变量 BALLOON_COLORS
  • 我们展示了不同的访问数组元素的方式:
    • ${BALLOON_COLORS[*]} 显示所有元素
    • ${BALLOON_COLORS[0]} 访问第一个元素(bash 中的数组是从 0 开始索引的)
    • ${#BALLOON_COLORS[@]} 给出数组中的元素数量

使用 Ctrl+OEnter 保存文件,然后使用 Ctrl+X 退出 nano。

运行脚本

现在再次运行脚本:

./variables.sh

你应该会看到以下输出:

The balloon color is: red
The balloon size is: 10 inches
A vailable balloon colors are: red green blue purple yellow
The first color is: red
The third color is: blue
Number of a vailable colors: 5

当你需要管理相关数据集合时,数组非常强大。

它们允许你组织多个值,并可以单独或作为一个组来访问这些值。

这在管理项目列表(如文件名、用户信息或配置选项)时特别有用。

变量操作与扩展

在这一步中,你将学习如何以不同方式操作和扩展变量。

这些技术能让你在不创建新变量的情况下修改变量值,这在文本处理和数据转换中非常有用。

编辑脚本

让我们再次编辑脚本:

nano ~/project/variables.sh

更新脚本以演示变量操作:

#!/bin/bash

## Declaring basic variables
NAME="linux"
MESSAGE="Hello, world!"
FILE_PATH="/home/user/documents/report.txt"

echo "Original values:"
echo "NAME = $NAME"
echo "MESSAGE = $MESSAGE"
echo "FILE_PATH = $FILE_PATH"

echo -e "nVariable manipulation examples:"

## Convert to uppercase
echo "NAME in uppercase: ${NAME^^}"

## Convert to lowercase
UPPER_NAME="LINUX"
echo "UPPER_NAME in lowercase: ${UPPER_NAME,,}"

## Get string length
echo "Length of MESSAGE: ${#MESSAGE}"

## Extract substring (starting at position 7, 5 characters)
echo "Substring of MESSAGE: ${MESSAGE:7:5}"

## Replace part of string
echo "Replace 'world' with 'Linux': ${MESSAGE/world/Linux}"

## Extract filename from path
echo "Filename from path: ${FILE_PATH##*/}"

## Extract directory from path
echo "Directory from path: ${FILE_PATH%/*}"

## Default value if variable is unset
UNSET_VAR=""
echo "Default value example: ${UNSET_VAR:-default value}"

此脚本展示了几种操作变量的方法:

  • ${NAME^^} - 转换为大写
  • ${UPPER_NAME,,} - 转换为小写
  • ${#MESSAGE} - 获取字符串长度
  • ${MESSAGE:7:5} - 提取子字符串(位置和长度)
  • ${MESSAGE/world/Linux} - 替换字符串的一部分
  • ${FILE_PATH##*/} - 从开头移除最长匹配项(提取文件名)
  • ${FILE_PATH%/*} - 从末尾移除最短匹配项(提取目录)
  • ${UNSET_VAR:-default value} - 如果变量未设置则使用默认值

使用 Ctrl+OEnter 保存文件,然后使用 Ctrl+X 退出 nano。

运行脚本并查看输出

现在运行脚本:

./variables.sh

你应该会看到类似于以下的输出:

Original values:
NAME = linux
MESSAGE = Hello, world!
FILE_PATH = /home/user/documents/report.txt

Variable manipulation examples:
NAME in uppercase: LINUX
UPPER_NAME in lowercase: linux
Length of MESSAGE: 13
Substring of MESSAGE: world
Replace 'world' with 'Linux': Hello, Linux!
Filename from path: report.txt
Directory from path: /home/user/documents
Default value example: default value

这些变量操作技术在处理文本数据、从字符串中提取信息以及在脚本中处理默认值时极为有用。

环境变量与变量作用域

在这最后一步中,你将了解环境变量、变量作用域,以及如何导出变量以使它们可被其他进程使用。

创建新脚本

创建一个名为 environment.sh 的新脚本:

nano ~/project/environment.sh

添加以下内容:

#!/bin/bash

## Displaying some common environment variables
echo "USER: $USER"
echo "HOME: $HOME"
echo "PATH: $PATH"
echo "PWD: $PWD"
echo "SHELL: $SHELL"

## Creating a local variable
LOCAL_VAR="This is a local variable"
echo "LOCAL_VAR: $LOCAL_VAR"

## Exporting a variable to make it a vailable to child processes
export EXPORTED_VAR="This variable is exported"
echo "EXPORTED_VAR: $EXPORTED_VAR"

## Demonstrate how variables work in subshells
echo -e "nVariable beha vior in subshell:"
(
  echo "Inside subshell:"
  echo "  LOCAL_VAR: $LOCAL_VAR"
  echo "  EXPORTED_VAR: $EXPORTED_VAR"
  echo "  Creating subshell-only variable"
  SUBSHELL_VAR="This variable only exists in the subshell"
  echo "  SUBSHELL_VAR: $SUBSHELL_VAR"
)

echo -e "nAfter subshell:"
echo "LOCAL_VAR: $LOCAL_VAR"
echo "EXPORTED_VAR: $EXPORTED_VAR"
echo "SUBSHELL_VAR: $SUBSHELL_VAR" ## This will be empty

## Creating a script to test export beha vior
echo -e "nCreating child script to test variable export..."
cat > ~/project/child_script.sh << 'EOF'
#!/bin/bash
echo "In child script:"
echo "EXPORTED_VAR: $EXPORTED_VAR"
echo "LOCAL_VAR: $LOCAL_VAR"
EOF

chmod +x ~/project/child_script.sh

## Run the child script
echo -e "nRunning child script:"
./child_script.sh

此脚本演示了:

  • 常见的环境变量(USERHOMEPATH 等)
  • 局部变量和导出变量之间的区别
  • 变量在子 shell 中的行为(括号用于创建子 shell)
  • 导出的变量如何被子进程继承

使用 Ctrl+OEnter 保存文件,然后使用 Ctrl+X 退出 nano。

添加执行权限并运行

使脚本可执行:

chmod +x ~/project/environment.sh

现在运行脚本:

./environment.sh

输出将向你展示变量在不同上下文中的行为:

  • 环境变量由系统预先设置
  • 局部变量仅存在于当前脚本中
  • 导出的变量会传递给子进程
  • 在子 shell 中创建的变量在父 shell 中不可用

在编写会生成子进程或引入其他脚本的复杂脚本时,理解变量作用域至关重要。

它有助于你管理系统不同部分之间的数据流。

总结

在这个实验中,你学习了 Linux shell 脚本中变量声明和操作的基础知识。

你探索了:

  • 基本的变量声明和使用
  • 整数变量和算术运算
  • 用于存储数据集合的数组变量
  • 用于文本处理的变量操作技术
  • 环境变量和变量作用域

这些技能构成了 shell 脚本的基础,对于在 Linux 环境中自动化任务至关重要。

变量允许你在脚本执行期间存储和处理数据,从而创建更具动态性和灵活性的脚本。

你现在可以使用这些技术来:

  • 在脚本中存储配置设置
  • 处理用户输入和文件内容
  • 操作文本数据和文件路径
  • 在不同的脚本和进程之间共享数据

随着你在 Linux shell 脚本领域继续探索,你会发现掌握变量的使用将为创建强大而高效的自动化工具带来更多可能性。

免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。

相关文章

更多

精选合集

更多

大家都在玩

热门话题

大家都在看

更多