跳到主要内容

variable

2024年06月21日
柏拉文
越努力,越幸运

一、认识


Shell 编程中,变量是用于存储数据值的名称。

二、声明


2.1 数字

num=10

2.2 数组

通过 ({value1..valueN}) 的形式: 直接将 {value1..valueN} 的结果复制给变量

#!/usr/bin/env bash

fileList=({1..10})
echo ${fileList[@]} // 使用 @ 符号可以获取数组中的所有元素

通过 $(seq value1 valueN) 的形式: 将 seq value1 valueN 命令的输出结果捕获,并赋值给变量

fileList=$(seq 1 10)
echo ${fileList[@]} // 使用 @ 符号可以获取数组中的所有元素

通过 (value1 value2 value3 …… valueN) 的形式: 直接将 (value1 value2 value3 …… valueN) 的结果复制给变量

fileList=(1 2 3 4 5 6 7 8 9 10)
echo ${fileList[@]} // 使用 @ 符号可以获取数组中的所有元素

2.3 字符串

str="this is s string"

2.4 内置变量

$0: 表示脚本的名称

$PATH: 包含了操作系统搜索可执行文件的路径

$1, $2, ……: 等表示脚本的参数。

$#: 表示传递给脚本的参数数量

$?: 表示上一个命令的退出状态等

2.5 捕获命令结果

pwd 绝对路径: var=$(cd 路径 && pwd)

#!/usr/bin/env bash

targetDir=$(cd ~/bolawen/scripts/test && pwd)
echo ${targetDir}

三、使用


使用变量时,变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界。总结: 尽管两者在大多数情况下是等价的,但是.${}这种语法能在一些特殊情况下更明确、可读,特别是在变量后有紧跟字符需求时。

3.1 数字

a=1

echo "$a"

或者

a=1

echo "${a}"

3.2 数组

读取数组某个元素: 格式为 ${数组名[下标]}, 用法如下:

valuen=${array_name[n]}

读取数组所有元素: 格式为 ${array_name[@]}, 用法如下:

echo ${array_name[@]}

获取数组长度: 格式为 #array_name[@] 或者 #array_name[*] 或者 #array_name[n], 用法如下:

length=${#array_name[@]} 

// 或者
length=${#array_name[*]}

// 或者

length=${#array_name[n]}

3.3 字符串