《Linux shell变量总结回顾》RHEL6
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《Linux shell变量总结回顾》RHEL6相关的知识,希望对你有一定的参考价值。
在实际的生产中,运维一般使用的shell语法还是比较多的,时不时的就要写一个简短shell脚本,大型的shell脚本用到的function 比较多,便于下一个脚本的引入,下面主要总结一些简单的shell命令,语法,便于今后shell脚本的书写。
环境变量路径:
[[email protected] ~]# set //查看到的是局部变量和全局变量2种
[[email protected] ~]# env //查看系统的全局环境变量
[[email protected] ~]# echo $PATH //查看系统环境变量路径
[[email protected] ~]# export $PATH //也可以使用export查看环境变量路径
[[email protected] ~]# export PATH=$PATH:/date/ //临时添加/date目录到环境变量路径下
要想重启主机后还生效就要编辑环境配置文件root/.bashec或/root/.bash_profile与/etc/profile文件,想要立刻生效可以使用命令:
注:.bash_profile文件支队系统当前用户生效
[[email protected] ~]# source .bash_profile
[[email protected] ~]# ls –a 可以查看到这2个文件
脚本的执行:
sh script //这种方法script不需要可执行权限
./ script //必须具有可执行权限
. script //这种方法script也不需要可执行权限
区分局部变量和全局变量
[[email protected] ~]# str=1000 //局部变量
[[email protected] ~]# echo $str
1000
去编辑一个脚本:
# vim bianliang.sh
#!/bin/bash
echo $str
[[email protected] ~]# bianliang.sh //我们定义的变量,但是通过脚本却不能输出
[[email protected] ~]# export str //添加到全局变量中
[[email protected] ~]# bianliang.sh //再次使用完全ok
1000
要想完全的清除某个全局变量:
# unset str 清除全局变量
#env 可以查看到所有全局变量
&& || 的用法:(参数的比对)
&& 条件符合要求才会执行后面的动作
|| 条件不符合要求时才会执行后面的动作
//查看/ect目录下是否有/grub.conf文件,有则输出yes,无则输出no。
[[email protected] ~]# [ -f /etc/grub.conf ] && echo yes || echo no
Yes
查看/shellscripts/hello.sh是否可执行,可执行则输入yes,否则就赋予它可执行权限
[[email protected] shellscripts]# [ -x /shellscripts/hello.sh ] && echo yes || chmod +x /shellscripts/hello.sh
[[email protected] shellscripts]# ls
hello.sh ipadd.sh logmess_clean.sh
[[email protected] shellscripts]# hello.sh
hello world!
“”和‘’与 ` ` 在shell变量中的区别
“ ” 允许通过$符引用其他变量
‘’禁止引用其他变量符,视为普通字符
`` 将命令执行的结果输出给变量
[[email protected] ~]# echo "$PWD is lujing"
/root is lujing
[[email protected] ~]# echo ‘$PWD is lujing‘
$PWD is lujing
[[email protected] ~]# echo $a
1000
[[email protected] ~]# echo $aaaaaaaa //系统把$aaaaa视为一个变量
[[email protected] ~]# echo ${a}aaaaaa //把变量用{}括起来,系统才会去输出变量
1000aaaaaa
#echo `ls` 反引号中的命令时可以单独执行的,然后再由echo输出
扩展:”\ “反斜杠,作用屏蔽字符的特殊意义
test命令
用途:测试表达式是否成立,成立返回值为0,否返回值为其他值。
格式:test 条件表达式 [条件表达式]
≡ 常见的测试类型
测试文件的状态
字符的串比较
整数值比较
逻辑测试
测试文件的状态
格式:[操作符 文件或目录]
常见的测试操作符
-d :测试是否为目录【directory】
[[email protected] /]# [ -d /var/spool/ ]
[[email protected] /]# echo $?
0
-e:测测试目录或文件是否存在【exist】
[[email protected] /]# [ -e /etc/passwd ]
[[email protected] /]# echo $?
0
-f:测试是否为文件【file】
[[email protected] Packages]# [ -f /etc/passwd ]
[[email protected] Packages]# echo $?
0
[[email protected] Packages]#
-r:测试当前的用户是否有读取的权限【read】
[[email protected] /]# [ -r /etc/shadow ]
[[email protected]lhost /]# echo $?
0
[[email protected] /]#
-w:测试当前的用户是否有写的权限【write】
[[email protected] /]# [ -w /etc/shadow ]
[[email protected] /]# echo $?
0
[[email protected] /]#
-x:测试当前的用户是否可执行和该文件【excute】
[[email protected] /]# [ -x /etc/shadow ]
[[email protected] /]# echo $?
1
[[email protected] /]# ll /etc/shadow
----------. 1 root root 1086 2月 26 22:38 /etc/shadow
-L:测试是否为符号链接文件【link】
[[email protected] /]# ll /etc/shadow
----------. 1 root root 1086 2月 26 22:38 /etc/shadow
[[email protected] /]# [ -L /etc/shadow ]
[[email protected] /]# echo $?
1
整数值比较
格式:[ 整数1 操作符整数2 ]
常用的操作测试符
-eq:等于(Equal)
-ne:不等于(Not Equal)
-gt:大于(Greater Than)
-lt:小于(Lesser Than)
-le:小于或等于(Lessser or Equal)
-ge:大于或等于(Greater or Equal)
案例:
如果登录用户数小于或等于10则输出YES
[[email protected] 桌面]# who|wc -l
2
[[email protected] 桌面]# [ `who|wc -l` -le 10 ] && echo "YES"
YES
变量的加减法运算:
变量的加法运算:
[[email protected] ~]# a=1000
[[email protected] ~]# echo $a
1000
[[email protected] ~]# expr $a + $a
2000
[[email protected] ~]# echo $a + $a //这是2中错误的操作,运算必须使用expr
1000 + 1000
[[email protected] ~]# expr $a+$a //$a + $a 要有空格否则也是错误的
1000+1000
变量的乘法运算:
[[email protected] ~]# expr $a * $a //* 在操作系统中视为特殊字符,\屏蔽字符的特殊意义
expr: syntax error
[[email protected] ~]# expr $a \* $a
1000000
[[email protected] ~]# expr 2 / 1 //除法
2
[[email protected] ~]# expr 2 – 1 //减法
1
[[email protected] ~]# expr 2 % 1 //取余
0
位置变量:
0-9 常用的为1-9
通过脚本来看些位置变量:
[[email protected] shellscripts]# cat a.sh
#!/bin/bash
echo $1
echo $2
echo $3
echo $0
[[email protected] shellscripts]# a.sh a b c d e
a
b
c
/shellscripts/a.sh //$0打印的是脚本笨的名字
[[email protected] shellscripts]# a.sh 1 2
3
[[email protected] shellscripts]# a.sh 2 3
5
[[email protected] shellscripts]# cat a.sh
#!/bin/bash
echo `expr $1 + $2` //$1和$2代表了2个位置变量
[[email protected] shellscripts]#
预定义变量
$# : 命令行中位置参数的个数
$* : 所有位置参数的内容
$? : 上一条命令执行后返回的状态,当状态为0时表示正常,非0表示执行异常或出错。
$$ : 当前所在进程的进程号
$! : 后台运行的最后一个进程号
$0 : 当前执行的进程/进程名
脚本的规范书写:
#!/bin/bash
#Date : 2014-5-28
#Author : Create by meng //脚本的创始人
#Mail :~~ //邮件地址
#Func (do):this is useradd user script. //脚本的作用
#V1.1 //脚本的版本
echo "hello,world!" //后面的才是脚本的内容
字符串比较
格式 [ 字符串1 = 字符串2 ]
[ 字符串1 != 字符串2 ]
[ -z 字符串 ]
常用的测试操作符
=:字符串内容相同
!=:字符串内容不相同,!号表示相反的意思
-z:字符内容为空
#read -p "input your name: " name
root
#echo $name
#[ $name != "root"] && echo "name is erro"
##read -p "input your name: " name
zhangsan
#[ 以上是关于《Linux shell变量总结回顾》RHEL6的主要内容,如果未能解决你的问题,请参考以下文章