基础永远值得花费90%的精力去学习加强。认识实践的重要性。
SHELL=[ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ]
progress:[#### ] 20%
Ax Variables | 变量
Variable Types | 类型
变量有三种主要的类型
- Local Variables − 局部变量,仅存在于当前实例中的变量。
- Environment Variables − 环境变量,可用于shell的所有子进程中。
- Shell Variables − shell变量,存在局部变量和环境变量,是shell正常运行所必须的特殊变量。
如果想让一个局部变量变为环境变量,需要使用export
命令,子环境中无法生效。
Defining Variables | 定义
由于系统内置的变量是大写,自定义的可以使用小写,但推荐使用大写,这是UNIX的命名规范。
变量可以使用a-Z,0-9和下划线。数字不能在开头,不能使用除此之外的其它字符。
$ name="Enomothem"
注意,等号左右不能有空格。
scalar variables(标量变量)只能保存一个值,就如name保存了Enomothem。可以储存任何值。
Accessing Values | 访问
需要访问变量的值,需要在变量前加上美元符($)
$ echo $name
Read-only Variables | 只读
shell提供了一个只读命令readonly
标记变量为只读,如果更改变量的值,将会报错。
$ name="Enomothem"
$ readonly name
$ name="who"
-bash: name: readonly variable
Unsetting Variables | 取消
使用unset
命令来取消或删除变量的值
$ unset name
只读变量是无法使用unset
删除的,一旦设置就无法更改,除非重启shell。
Special Variables | 特殊
一些特殊的变量。
$表示当前shell的进程号(PID)
$ echo $$
其它特殊变量。
Sr.No. | character | Variable & Description |
---|---|---|
1 | $0 | 当前脚本的文件名。 |
2 | $n | 调用脚本的参数,n从1开始。 |
3 | $# | 提供脚本使用参数的数量。 |
4 | $* | 所有的参数被双引号引起来的集合 |
5 | $@ | 所有的参数被双引号单独引起来的集合 |
6 | $? | 前一个执行命令后退出的状态 |
7 | $$ | 当前shell的进程号 |
8 | $! | The process number of the last background command. |
Command-Line Arguments
$0是执行的文件名,然后是参数$1,$2,$3,…
#!/bin/sh
echo "File Name: $0"
echo "First Parameter : $1"
echo "Second Parameter : $2"
echo "Quoted Values: $@"
echo "Quoted Values: $*"
echo "Total Number of Parameters : $#"
运行脚本
$ ./test.sh Zara Ali
File Name : ./test.sh
First Parameter : Zara
Second Parameter : Ali
Quoted Values: Zara Ali
Quoted Values: Zara Ali
Total Number of Parameters : 2
Special Parameters $* and $@
$*
和$@
都是访问所有的参数,前者是将所有参数作为一个参数,之间有空格,后者是将所有参数作为一个参数,但参数之间单独分隔开来。
#!/bin/sh
for TOKEN in $*
do
echo $TOKEN
done
用这个脚本来查看未知的参数。
Exit Status
$?
记录前一个命令退出的状态,返回成功则是0,失败是1或其它数值表示各种异常。