Shell 介绍(二)--Shell 变量

目录

1. 变量声明与赋值

赋值

示例

2. 引用变量

直接引用

参数扩展

数组

3. 环境变量

设置环境变量

查看环境变量

4. 局部变量

函数内的局部变量

5. 从命令行读取参数

6. 特殊变量

$0

$#

$*

$@

7. 字符串操作

拼接

替换

8. 命令替换

9. 条件判断

10. 数组操作

声明数组

访问数组元素

修改数组元素

遍历数组

总结


 

Shell 变量是 Shell 脚本编程中的重要组成部分,它们用于存储数据并在脚本中使用这些数据。在 Shell 脚本中,变量可以用来存储字符串、数值、命令输出等不同类型的数据。以下是关于 Shell 变量的详细介绍,包括变量声明、赋值、引用、环境变量、局部变量等概念。

1. 变量声明与赋值

在 Shell 中,变量的声明和赋值非常简单,不需要提前声明类型。变量名通常遵循以下规则:

  • 变量名只能包含字母、数字和下划线 _
  • 变量名必须以字母或下划线开头。
  • 变量名区分大小写。

赋值

赋值给变量时,不需要使用等号 = 前后的空格,但是推荐这样做以增加可读性。

 

bash

深色版本

1variable_name=value

或者:

 

bash

深色版本

1variable_name=value

示例

 

bash

深色版本

1# 赋值一个字符串
2name="Alice"
3# 赋值一个数字
4age=30
5# 赋值一个命令的输出
6current_date=$(date)

2. 引用变量

引用变量时,需要在变量名前加上美元符号 $

直接引用

直接引用变量:

 

bash

深色版本

1echo "My name is $name"

参数扩展

使用 {} 来扩展变量引用,可以在 {} 中进行字符串处理:

 

bash

深色版本

1# 截取字符串的一部分
2echo "${name:0:3}" # 输出 "Ali"
3# 移除字符串的前缀或后缀
4echo "${name#Alice}" # 输出 ""(移除前缀 Alice)
5echo "${name%%,*}" # 假设 name="Alice,Bob",输出 "Alice"(移除后缀 ,Bob)

数组

Shell 支持数组,可以通过下标来访问数组元素:

 

bash

深色版本

1# 声明并初始化数组
2names=("Alice" "Bob" "Charlie")
3# 引用数组元素
4echo "${names[0]}"
5# 遍历数组
6for name in "${names[@]}"; do
7  echo "$name"
8done

3. 环境变量

环境变量是在整个 shell 会话期间有效的变量。环境变量可以被子进程继承,也可以传递给其他命令。

设置环境变量

使用 export 命令来设置环境变量,这样变量就能在整个 shell 会话期间有效:

 

bash

深色版本

1export PATH=$PATH:/new/path

查看环境变量

使用 envprintenv 命令来查看当前环境中的所有环境变量:

 

bash

深色版本

1env

或者查看特定的环境变量:

 

bash

深色版本

1echo $PATH

4. 局部变量

局部变量只在当前脚本或函数的作用域内有效。默认情况下,变量是局部变量。

函数内的局部变量

在函数内部声明的变量只在该函数内有效:

 

bash

深色版本

1function greet() {
2  local greeting="Hello"
3  echo "$greeting"
4}
5
6greet # 输出 "Hello"
7echo $greeting # 输出空,因为 greeting 是局部变量

5. 从命令行读取参数

脚本可以接受命令行参数,这些参数可以通过特殊的变量 $1, $2, $3 等来访问:

 

bash

深色版本

1#!/bin/bash
2
3# 从命令行读取参数
4echo "First argument: $1"
5echo "Second argument: $2"
6echo "All arguments: $@"
7
8# 遍历所有参数
9for arg in "$@"; do
10  echo "Argument: $arg"
11done

6. 特殊变量

$0

表示脚本名称。

$#

表示命令行参数的数量。

$*

表示所有命令行参数,作为一个单一的字符串。

$@

表示所有命令行参数,作为单独的字符串。

7. 字符串操作

拼接

使用 + 或者直接连接:

 

bash

深色版本

1first="Hello"
2second="World"
3message="$first $second"
4echo "$message" # 输出 "Hello World"

替换

使用 sedtr 进行字符串替换:

 

bash

深色版本

1text="Hello, World!"
2new_text=$(echo "$text" | tr '[:upper:]' '[:lower:]')
3echo "$new_text" # 输出 "hello, world!"

8. 命令替换

使用 $() 或者反引号 `command` 来将命令的输出赋值给变量:

 

bash

深色版本

1current_time=$(date +%T)
2echo "Current time: $current_time"

9. 条件判断

使用 [test 命令进行条件判断,并根据条件赋值给变量:

 

bash

深色版本

1if [ "$age" -ge 18 ]; then
2  status="adult"
3else
4  status="minor"
5fi
6echo "Status: $status"

10. 数组操作

声明数组

 

bash

深色版本

1array=(element1 element2 element3)

访问数组元素

 

bash

深色版本

1echo "${array[0]}"

修改数组元素

 

bash

深色版本

1array[0]="new_element"

遍历数组

 

bash

深色版本

1for element in "${array[@]}"; do
2  echo "$element"
3done

总结

Shell 变量是 Shell 脚本编程的基础,它们允许你在脚本中存储和处理数据。通过上述介绍,你应该能够理解和使用 Shell 变量来进行简单的数据操作和逻辑处理。随着实践经验的增加,你可以进一步探索更高级的主题,如条件语句、循环、函数等,以编写更复杂的脚本。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值