shell脚本变量的特殊用法

1k 词

符号用法

"":包含的变量会被解释,同时会识别解释其内的特殊字符。

'':包含的内容当作纯字符串原样输出,不会解释其内的特殊字符。例如:

1
2
3
4
5
name = "zhangsan"
string1 = "good morning $name"
string2 = 'good morning $name'
echo $string1
echo $string2

输出结果:

1
2
good morning zhangsan
good morning $name

``$():反引号(括号)中的内容作为系统命令,执行其内容,可以替换输出为一个变量,例如

1
$echo "todys is `date`"

输出结果:

1
todys is Mon Jul 29 14:15:00 CST 2024

\:转义符,除了可以像C语言中一样使用\n \t \r等转义字符为符号,将原来有特殊含义的字符变为普通字符,如\$等,如果要让echo指令识别转义符,则需要在echo命令前面加上-e提示符。

():括号,在括号中的命令会新开一个子shell顺序执行,括号外的命令在当前shell中执行,括号中如果出现变量,则变量作用域仅限于括号中,括号外无法使用括号内的变量。

{}:大括号,大括号中的命令在当前shell顺序执行,大括号中可以使用当前shell的变量。
注意{}内的命令因为是在当前的shell中执行,所以在回括前的最后一条语句也需要分号
例如

1
2
3
4
5
6
7
8
num = 100
# 在子shell中执行,不影响当前的变量
( num = 999; echo "1.1: $num" )
echo "1.2: $num";
# 在当前shell执行,共用括号外部的变量
{ num = 666; echo "2.1: $num"; } # 注意大括号在回括前的最后一条语句需要分号
echo "2.2: $num"

输出结果:

1
2
3
4
1.1: 999
1.2: 100
2.1: 666
2.2: 666

[]:条件判断,在[]中的条件判断,条件前后必须有空格,例如:[ $var -eq 1 ]


`${}`:变量取值替换,在变量名前加上`$`符号,或者使用`${}`符号,可以获取变量的值。例如:`echo ${var}` 或 `echo $var`。