您的位置:首页 > 运维架构 > Shell

笔记整理之 SHELL 变量

2016-05-23 18:30 405 查看
变量的类型:

1.自定义变量

定义变量: 变量名=变量值 变量名必须以字母或下划线开头,区分大小写 url1=test.3glong.com
引用变量: $变量名 或 ${变量名}
查看变量: echo $变量名 set(所有变量:包括自定义变量和环境变量)
取消变量: unset 变量名
作用范围: 仅在当前shell中有效

示例:

2. 环境变量
定义环境变量: 方法一 export url2=test2.3glong.com
方法二 export url1 将自定义变量转换成环境变量
引用环境变量: $变量名 或 ${变量名}
查看环境变量: echo $变量名 env 例如env |grep back_dir2
取消环境变量: unset 变量名
变量作用范围: 在当前shell和子shell有效
示例:

[root@node91 ~]# url1=test.3glong.com           #定义自定义变量
[root@node91 ~]# export url2=test2.3glong.com  #定义环境变量
[root@node91 ~]# /bin/bash             #再开启一个bash进入子shell
[root@node91 ~]# pstree
init─┬─abrtd
├─acpid
├─anacron
├─atd
├─auditd───{auditd}
├─console-kit-dae───63*[{console-kit-da}]
├─crond
├─cupsd
├─dbus-daemon
├─dhclient
├─hald─┬─hald-runner─┬─hald-addon-acpi
│      │             └─hald-addon-inpu
│      └─{hald}
├─login───bash
├─master─┬─pickup
│        └─qmgr
├─5*[mingetty]
├─rpc.statd
├─rpcbind
├─rsyslogd───3*[{rsyslogd}]
├─sshd───sshd───bash───bash───pstree   #确认处于子shell
├─udevd───udevd
└─xinetd
[root@node91 ~]# echo $url1           #输出自定义变量
#发现什么都没有
[root@node91 ~]# echo $url2
test2.3glong.com                                 #环境变量输出了
[root@node91 ~]# exit                          #退出当前子shell
exit
[root@node91 ~]# echo $url1
test.3glong.com                                     #自定义变量只能当前shell使用
[root@node91 ~]# echo $url2
test2.3glong.com
[root@node91 ~]# export url1               #转换i自定义变量为环境变量
[root@node91 ~]# /bin/bash
[root@node91 ~]# echo $url1               #进入子shell
test.3glong.com                                       #子shell也正常了


3. 位置变量
$1 $2 $3 $4 $5 $6 $7 $8 $9 ${10}
[root@node91 ~]# vim test.sh

echo "第2个位置参数是$2"
echo "第1个位置参数是$1"
echo "第4个位置参数是$4"
echo "所有参数是: $*"
echo "所有参数是: $@"
echo "参数的个数是: $#"
echo "当前进程的PID是: $$"
echo '$1='$1
echo '$2='$2
echo '$3='$3
echo '$*='$*
echo '$@='$@
echo '$#='$#
echo '$$='$$

4. 预定义变量
$0 脚本名
$* 所有的参数
$@ 所有的参数
$# 参数的个数
$$ 当前进程的PID
$! 上一个后台进程的PID
$? 上一个命令的返回值 0表示成功
定义或引用变量时注意事项:
" " 弱引用
' ' 强引用

[root@node91 ~]# school=emlog
[root@node91 ~]# echo "$school blog"
emlog blog
[root@node91 ~]# echo '$school blog'
$school blog
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  SHELL