shell编程变量知识

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq3399013670/article/details/86603397

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:

扫描二维码关注公众号,回复: 5480929 查看本文章
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,使用大括号括起来 {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。

猜你喜欢

转载自blog.csdn.net/qq3399013670/article/details/86603397