大数据之Shell编程(一) Shell变量
1.Shell中的变量
Shell中的变量分为系统变量和用户变量,可以通过
set
命令查看有哪些变量可以使用
系统变量比如:$HOME
$PWD
$SHELL
$USER
等等
2.变量的定义
变量=值 (例如STR=abc) 注意:=两边不能含有空格
变量一般使用大写,当然不是硬性规定
双引号和单引号区别:双引号仅仅将空格等脱意,而单引号会将所有的特殊字符脱意
>>> STR=abc
>>> echo "hello $STR"
>>> hello abc
>>> echo 'hello $STR'
>>> hello $STR
可以使用unset
撤销变量
>>> unset STR
可以使用readonly
声明只读变量
>>> readonly B=2 # 声明静态变量,不能进行unset操作,使用频率极低
可以使用export
将一个变量提升为环境变量,提供给其它的Shell使用
>>> export JAVA_HOME=/user/java
3.将一个命令的返回值赋予一个变量
- A=`ls -al` 使用反引号将命令包裹
- 上面的等同于 A=$(ls -al)
>>> A=`wc -c helloworld.sh`
>>> echo $A
>>> 90 helloworld.sh
>>> B=$(wc -c helloworld.sh | cut -d ' ' -f1) # cut表示已' '分割去除第一个参数(f1)
>>> echo $B
>>> 90
4.Shell中的特殊变量
- $? 表示上一条命令退出的状态(0 表示成功 ,非0表示失败 ,范围为0~255)
- $$ 表示当前进程编号
- $0 表示当前脚本的名称
- $n 表示位置变量(n表示数字,n>=1)
- $# 表示变量的个数
- $*和$@都表示参数列表
$和$@的区别
"$"表示"$1 $2 .... $n"
"$@"表示"$1" "$2" "$3"
也就是添加引号后$*的会是一个字符,他会将所有的参数进行连接,而$@不会
>>> ls
>>> echo $?
>>> 0