1、环境变量
环境变量用于定义Shell的运行环境。环境辨率可在命令行中设置,但用户退出时这些变量值也会丢失,因此最好在用户的家目录下的.bash_profile文件中或全局配置/etc/bashrc,/etc/profile文件或者/etc/profile.d/中定义。将环境变量放入profile文件中,每次用户登录时这些变量值都将被初始化。
传统上,所有环境变量均为大写。环境变量应用于用户进程前,必须用export命令导出。
env #查看系统环境变量
2、自定义环境变量(全局变量)
(1)export 变量名=value,临时命令行生效
demo:
[root@jackroo ~]# ls /root/.bash_profile #root用户下有效,用户环境变量的配置
/root/.bash_profile
[root@jackroo ~]# ls /etc/profile #所有用户均有效,全局环境变量的配置
/etc/profile
/etc/bashrc
登录显示加载内容可以放在/etc/profile.d/
自定义环境变量生产环境java环境配置实例:tomcat,hadoop
export JAVA_HOME=/opt/app/jdk
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin
export RESIN_HOME=/application/resin
常见放在:/etc/profile
3、环境变量的显示与取消
(1)显示printf或echo
(2) env或set查看默认环境变量
(3) 取消unset 变量名(不带$号)
[root@jackroo ~]# echo $OLDBOY
oldboy
[root@jackroo ~]# unset OLDBOY
[root@jackroo ~]# echo $OLDBOY
4、局部变量
(1)字符串定义
变量名=value
变量名=‘value’ #单引号原样输出
变量名=“value”
习惯:数字不加引号,其他默认加双引号。
demo:
[root@jackroo day2]# echo "today is `date`"
today is 2019年 01月 22日 星期二 14:46:15 CST
[root@jackroo day2]# echo "today is $(date)"
today is 2019年 01月 22日 星期二 14:46:29 CST
demo2:awk特殊点。
[root@jackroo day2]# ETT=123
[root@jackroo day2]# awk 'BEGIN {print $ETT}'
[root@jackroo day2]# awk 'BEGIN {print "$ETT"}'
$ETT
[root@jackroo day2]# awk 'BEGIN {print '$ETT'}'
123
demo3:
tar -zcvf etc_$(date +%F).tar.gz /etc
demo4:
sed -i 's#oldboy#oldgirl#g' `find -type f -name "oldboy.log"`
find /oldboy -type f -name "oldboy.log"|xargs cat oldgirl
5、shell特殊变量
(1)位置变量
$0 获取当前执行的shell脚本的文件名,包括脚本路径。
n 获 取 当 前 执 行 的 s h e l l 脚 本 的 第 n 个 参 数 值 , n = 1..9 , 当 n = 0 表 示 脚 本 路 径 , 如 果 n 大 于 9 , 使 用 大 括 号 括 起 来 n 获取当前执行的shell脚本的第n个参数值,n=1..9,当n=0表示脚本路径,如果n大于9,使用大括号括起来 n获取当前执行的shell脚本的第n个参数值,n=1..9,当n=0表示脚本路径,如果n大于9,使用大括号括起来{10}。
[root@jackroo day2]# cat p.sh
echo $1
[root@jackroo day2]# sh p.sh oldboy
oldboy
basename #文件名字
dirname #文件路径
[root@jackroo day2]# dirname /server/scripts/day2/n.sh
/server/scripts/day2
[root@jackroo day2]# basename /server/scripts/day2/n.sh
n.sh
$# 获取当前shell命令行中参数的总个数。
$? 返回值参考:
0 -表示运行成功
2 -权限拒绝
1-125 -运行失败,脚本命令,系统命令错误或参数错误
126 -找到该命令了,但是无法执行
127 -未找到执行的命令
>128 -命令被系统强制结束
exit 123 #赋值给$?,脚本调用,一般用exit 0,或return 0。