0720_Shell脚本基础(2)

263 阅读1分钟

转义

转义这个概念在很多的编程语言中都有。为什么需要转义呢? 因为某些字符在语言中具有特殊含义,比如 $ * \ &,所以这些字符不能够直接表示出来。

# 会去查找名为 date 的变量
$ echo $date

# 原样显示出 $date 字符串
$ echo \$date

$date

单引号、双引号、反引号

单引号保留字符的字面意思,不是特殊含义


echo '$USER' # 会原样打印出来,而不是查找 USER 的变量值

双引号保留大部分字符的字面意思,但是 $ ` \ 这三个字符依然会被拓展。


echo "$USER" # 会查找 USER 变量

echo "`date`" # 会执行 date 命令

反引号可以用来执行 子命令,如上,但是,官方建议使用 $() 来替代反引号。


echo "$(date)" # 执行 date 命令

变量

Shell 的变量属于随用随声明,声明的时候不需要 $,而调用的时候,需要 $


aaa="abc"

echo $aaa

特殊变量和环境变量

使用 env 命令可以显示所有的环境变量

系统提前预设了一组特殊变量,用于存储特殊的数据

特殊变量含义
$?上一个命令的返回值 0 表示成功,非 0 失败
$$当前 shell 的进程 ID
$_上一个命令的最后一个参数
$!最近一个后台异步命令的进程 ID
$0当前 shell 的名称

| $# | 脚本的参数个数 | | $@ | 脚本的所有参数值 | | $1 - $9 | 第一个到第九个参数 | | ${10} | 参数超过9 就要用这种表示 |

let 命令可以在声明变量时,执行算术表达式


let foo=1+2

echo $foo

# 或者

let "foo = 1 + 2"

echo $foo