linux shell编程1 - 环境与变量

时间:2021-11-24 15:36:21
1. 本地变量
本地变量的生命周期是当前进程中有效,如果在shell中启动令一个子进程或退出,此值无效。
var_name=value   #设置变量的值,返回var_name
var_name:=value  #如果如果没有值,则设置其值,返回var_name
echo $var_name   #显示变量
msg="Sorry this file does not exist ${name1}."#可以嵌套在字符串之中使用
unset var_name   #清除变量
set              #显示所有的变量


2. 环境变量
环境变量可以用于所有的子进程。
实际上就是使用export把本地变量导出为环境变量。注意子进程导出的环境变量不能用于父进程。
var_name=value
export var_name
echo $var_name   #其实所有的shell变量的访问都是一样的,可以是$var_name,还可以是${var_name}。
unset var_name   #清除变量
env              #显示所有的环境变量


3. 参数变量
该变量是特殊变量,因为她是只读。例如:$0,$1,$2,$3,......。
这些变量是用于向脚本传递参数的。第一个$0一般表示脚本名称,其后的表示参数字。
其实在执行一个脚本时,首先输入脚本名称,然后输入各个参数,而且都是以空格分开。

4. 特定变量
该变量是特殊变量,因为她是只读。一共有7个:$#,$*,$$,$!,$@,$-,$?。
这些变量是用于保存脚本执行过程中的信息。
比如执行脚本:./m aa bb ccc
$# 为3,表示传递到脚本的参数个数
$* 为字符串“aa bb ccc” ,与位置变量不同,此参数参数个数可以超过9个
$$ 表示当前进程ID号
$! 表示后台运行的最后一个进程的进程ID号
$@ 与$*相同,但是使用时加引号,并在引号中返回每个参数
$- 表示shell使用的当前选项,与set命令功能相同
$? 表示最后的退出状态。0表示没有错误,其它任何值表明有错误。