《Linux shell变量总结回顾》RHEL6(转)
文章版权:http://www.cnblogs.com/linux-super-meng/
环境变量路径:
[root@localhost ~]# set //查看到的是局部变量和全局变量2种
[root@localhost ~]# env //查看系统的全局环境变量
[root@localhost ~]# echo $PATH //查看系统环境变量路径
[root@localhost ~]# export $PATH //也可以使用export查看环境变量路径
[root@localhost ~]# export PATH=$PATH:/date/ //临时添加/date目录到环境变量路径下
要想重启主机后还生效就要编辑环境配置文件root/.bashec或/root/.bash_profile与/etc/profile文件,想要立刻生效可以使用命令:
注:.bash_profile文件支队系统当前用户生效
[root@localhost ~]# source .bash_profile
[root@localhost ~]# ls –a 可以查看到这2个文件
脚本的执行:
sh script //这种方法script不需要可执行权限
./ script //必须具有可执行权限
. script //这种方法script也不需要可执行权限
区分局部变量和全局变量
[root@localhost ~]# str=1000 //局部变量
[root@localhost ~]# echo $str
1000
去编辑一个脚本:
# vim bianliang.sh
#!/bin/bash
echo $str
[root@localhost ~]# bianliang.sh //我们定义的变量,但是通过脚本却不能输出
[root@localhost ~]# export str //添加到全局变量中
[root@localhost ~]# bianliang.sh //再次使用完全ok
1000
要想完全的清除某个全局变量:
# unset str 清除全局变量
#env 可以查看到所有全局变量
&& || 的用法:(参数的比对)
&& 条件符合要求才会执行后面的动作
|| 条件不符合要求时才会执行后面的动作
//查看/ect目录下是否有/grub.conf文件,有则输出yes,无则输出no。
[root@localhost ~]# [ -f /etc/grub.conf ] && echo yes || echo no
Yes
查看/shellscripts/hello.sh是否可执行,可执行则输入yes,否则就赋予它可执行权限
[root@localhost shellscripts]# [ -x /shellscripts/hello.sh ] && echo yes || chmod +x /shellscripts/hello.sh
[root@localhost shellscripts]# ls
hello.sh ipadd.sh logmess_clean.sh
[root@localhost shellscripts]# hello.sh
hello world!
“”和‘’与 ` ` 在shell变量中的区别
“ ” 允许通过$符引用其他变量
‘’禁止引用其他变量符,视为普通字符
`` 将命令执行的结果输出给变量
[root@localhost ~]# echo "$PWD is lujing"
/root is lujing
[root@localhost ~]# echo '$PWD is lujing'
$PWD is lujing
[root@localhost ~]# echo $a
1000
[root@localhost ~]# echo $aaaaaaaa //系统把$aaaaa视为一个变量
[root@localhost ~]# echo ${a}aaaaaa //把变量用{}括起来,系统才会去输出变量
1000aaaaaa
#echo `ls` 反引号中的命令时可以单独执行的,然后再由echo输出
扩展:”\ “反斜杠,作用屏蔽字符的特殊意义
test命令
用途:测试表达式是否成立,成立返回值为0,否返回值为其他值。
格式:test 条件表达式 [条件表达式]
≡ 常见的测试类型
测试文件的状态
字符的串比较
整数值比较
逻辑测试
测试文件的状态
格式:[操作符 文件或目录]
常见的测试操作符
-d :测试是否为目录【directory】
[root@localhost /]# [ -d /var/spool/ ]
[root@localhost /]# echo $?
0
-e:测测试目录或文件是否存在【exist】
[root@localhost /]# [ -e /etc/passwd ]
[root@localhost /]# echo $?
0
-f:测试是否为文件【file】
[root@localhost Packages]# [ -f /etc/passwd ]
[root@localhost Packages]# echo $?
0
[root@localhost Packages]#
-r:测试当前的用户是否有读取的权限【read】
[root@localhost /]# [ -r /etc/shadow ]
[root@localhost /]# echo $?
0
[root@localhost /]#
-w:测试当前的用户是否有写的权限【write】
[root@localhost /]# [ -w /etc/shadow ]
[root@localhost /]# echo $?
0
[root@localhost /]#
-x:测试当前的用户是否可执行和该文件【excute】
[root@localhost /]# [ -x /etc/shadow ]
[root@localhost /]# echo $?
1
[root@localhost /]# ll /etc/shadow
----------. 1 root root 1086 2月 26 22:38 /etc/shadow
-L:测试是否为符号链接文件【link】
[root@localhost /]# ll /etc/shadow
----------. 1 root root 1086 2月 26 22:38 /etc/shadow
[root@localhost /]# [ -L /etc/shadow ]
[root@localhost /]# 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
[root@localhost 桌面]# who|wc -l
2
[root@localhost 桌面]# [ `who|wc -l` -le 10 ] && echo "YES"
YES
变量的加减法运算:
变量的加法运算:
[root@localhost ~]# a=1000
[root@localhost ~]# echo $a
1000
[root@localhost ~]# expr $a + $a
2000
[root@localhost ~]# echo $a + $a //这是2中错误的操作,运算必须使用expr
1000 + 1000
[root@localhost ~]# expr $a+$a //$a + $a 要有空格否则也是错误的
1000+1000
变量的乘法运算:
[root@localhost ~]# expr $a * $a //* 在操作系统中视为特殊字符,\屏蔽字符的特殊意义
expr: syntax error
[root@localhost ~]# expr $a \* $a
1000000
[root@localhost ~]# expr 2 / 1 //除法
2
[root@localhost ~]# expr 2 – 1 //减法
1
[root@localhost ~]# expr 2 % 1 //取余
0
位置变量:
0-9 常用的为1-9
通过脚本来看些位置变量:
[root@localhost shellscripts]# cat a.sh
#!/bin/bash
echo $1
echo $2
echo $3
echo $0
[root@localhost shellscripts]# a.sh a b c d e
a
b
c
/shellscripts/a.sh //$0打印的是脚本笨的名字
[root@localhost shellscripts]# a.sh 1 2
3
[root@localhost shellscripts]# a.sh 2 3
5
[root@localhost shellscripts]# cat a.sh
#!/bin/bash
echo `expr $1 + $2` //$1和$2代表了2个位置变量
[root@localhost 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!" //后面的才是脚本的内容
文章版权:http://www.cnblogs.com/linux-super-meng/
字符串比较
格式 [ 字符串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
#[ $name != "root"] && echo "name is erro"
#echo $name
文章版权:http://www.cnblogs.com/linux-super-meng/
逻辑测试
格式:[表达式1] 操作符 [表达式2]
常用的测试操作符
-a 或&&:逻辑与,“而且”的意思
#前后两个表达式都成立是整个测试结果才为真,否则为假
(前面真则执行后面)
-o或||:逻辑或,或者的意思
#操作符两边至少一个为真时,结果为真,否则结果为假
(前面假则执行后面)
!:逻辑否
#当指定条件不成立时,返回结果为真
if条件语句 --单分支
当“条件成立“时执行相应的操作
if 条件测试命令 if 磁盘已用空间>80%
then 命令序列 ==》 then 报警
fi
应用案例:
如果/boot分区的空间使用超过80%,输出报警信息
#!/bin/bash
RATE=`df |awk'NR==4{print int($5)}'`
if [$RATE -gt 80]
then
echo "warning,DISK is full!"
if
if条件语句--双分支
当“条件成立”、“条件不成立”时执行不同的操作
if 条件测试命令 if 3306端口是否在监听状态
then 命令序列1 ==》 then mysqld 服务已运行
else 命令序列2 else 启动mysqld服务
fi
引用案例:
判断vsftp是否在运行。若已运行则输出提示信息,否则重新启动vsftp服务
#!/bin/bash
service vsftp status &>/dev/null
if [ $? -eq 0 ]
then
echo "vsftp service is running"
else
/etc/init.d/vsftp restart
fi
如果/boot分区的空间使用超过80%,输出警报信息。我们来写个脚本
#vi a.sh
#!/bin/bash
#a.sh
NUM=`df | awk 'NR==5{print int($5)}'`
if
[ $NUM -gt 80 ]
then
echo "Warning,DISK is full!"
if
awk的额外扩展
[root@localhost ~]# cat /etc/passwd | grep bash | awk -F: '{print ($1)}'
root
lenovo
[root@localhost ~]# ^C
文章版权:http://www.cnblogs.com/linux-super-meng/
for循环语句 for 收件人 in 邮件地址列表
根据变量的不通值,重复执行一组命令操作 ==》 do
for 变量名 in 取值列表 发邮件
do done
命令序列
done
#!/bin/bash
for TM in a b c d e
do
echo $TM
sleep 1
done
~
重复测试指定的条件,只要条件成立则反复执行对应的命令操作
while 命令或表达式 while 可用内存<100mb
do ==》do
命令列表 获取可用内存数
done done
文章版权:http://www.cnblogs.com/linux-super-meng/
多重分支语句
root@localhost ~]# cat a.sh
#!/bin/bash
#a.sh
case $1 in
start)
echo "start...."
;;
stop)
echo "stop......"
;;
restart)
echo "restart........"
;;
laod)
echo "laod......."
;;
status)
echo "start....."
echo "stop......"
;;
esac
[root@localhost ~]# ./a.sh start
start....
[root@localhost ~]# ./a.sh stop
stop......
[root@localhost ~]#
[root@localhost ~]# cat a.sh
#!/bin/bash
#a.sh
read -p "input:" NUM
case "$NUM" in
[a-z]|[A-Z])
echo "it is english"
;;
[0-9])
echo "it is shuzi"
;;
*)
echo "........."
;;
esac
[root@localhost ~]#
[root@localhost ~]# ./a.sh
input:2
it is shuzi
[root@localhost ~]# ./a.sh
input:a
it is english
[root@localhost ~]# ./a.sh @
input:@
.........
[root@localhost ~]# ./a.sh
input:#
.........
[root@localhost ~]#
shift迁移语句
用于迁移位置变量,将$1~$9依次向左传递
[root@localhost ~]# ./a.sh 10 20
The sum is: 30
[root@localhost ~]# cat a.sh
#!/bin/bash
#a.sh
Result=0
while [ $# -gt 0 ]
do
Result=`expr $Result + $1`
shift
done
echo "The sum is: $Result"
[root@localhost ~]#
break语句
用于跳出当前的循环体,执行循环体后的语句。
函数的应用
[root@localhost ~]# ./c.sh
46
55
[root@localhost ~]# cat c.sh
#!/bin/bash
#c.sh
adder(){
echo `expr $1 + $2`
}
adder 12 34
adder 22 33
[root@localhost ~]# ./c.sh
46
55
[root@localhost ~]#
声明:以上知识全来自与自学shell编程总结回顾
《Linux shell变量总结回顾》RHEL6(转)相关推荐
- 《Linux shell变量总结回顾》RHEL6
在实际的生产中,运维一般使用的shell语法还是比较多的,时不时的就要写一个简短shell脚本,大型的shell脚本用到的function 比较多,便于下一个脚本的引入,下面主要总结一些简单的shel ...
- Linux shell 变量 数学 运算
出处:http://qujunorz.blog.51cto.com/6378776/1382085 Abstract : 1) Linux shell 中使用 let , [ ] ,(( )) 三种 ...
- Linux Shell变量类型
Linux Shell 变量的类型 自定义变量类型 定义变量: 变量名=变量值 变量名必须以字母或者下划线开头,区分大小写 引用变量: 变量名或者变量名 或者变量名或者(变量名) 查看变量: echo ...
- linux shell变量的,linux shell变量解析
摘要 腾兴网为您分享:linux shell变量解析,智影,智联招聘,智慧消防,音恋等软件知识,以及考拉fm电台,快快游戏,京东企业购app,pdf加密工具,高德导航3d版,电脑驱动,兰溪新闻,我爱网 ...
- linux shell 变量减法_Linux Shell (3) - 变量运算
Linux Shell (3) - 变量运算 String - expr命令 concat str=$str1$str2 str=$str1' '$str2 str=$str'12345 '$str2 ...
- Linux Shell变量使用
一.本地变量的使用 本地变量就如同局部变量一样,只在本SHELL中起作用.它不会影响到其他SHELL中的变量. 1.显示变量值 可以使用echo命令.需要注意的是,使用变量的时候必须在变量名前加上$符 ...
- linux shell变量作用域,Shell变量的作用域:Shell全局变量、环境变量和局部变量
Shell变量的作用域(Scope),就是Shell变量的有效范围(可以使用的范围). 在不同的作用域中,同名的变量不会相互干涉,就好像A班有个叫小明的同学,B班也有个叫小明的同学,虽然他们都叫小明( ...
- linux shell 变量减法_第四章 shell和环境变量
第四章 shell和环境变量 4.1 shell简介 4.1.1 编译器 一台计算机从基本架构上讲,由最基本的硬件组成硬件结构(如:cpu.内存.主板.声卡.显卡等),我们知道,硬件组成完备,但 ...
- linux shell 变量 管道,linux下shell,变量,管道,重定向等基础知识及技巧
知识点如下: 1,关于shell编程中的变量,shell编程中的变量分为4种 本地变量:只对本系统本用户自己的shell有用 环境变量:对本系统的所有shell都有用 用export来声明变量 例 ...
最新文章
- 山西对口升学计算机分数线,2020年山西对口升学本科一批录取分数线是多少
- codeforces D Prefixes and Suffixes(kmp)
- go errgroup 用法示例
- Oracle 一些常用函数
- Financial Managemen
- LINUX下查看CPU使用率的命令[Z]
- 网页后门危害大 网站安全狗帮助查杀
- wps下一步快捷键_WPS的快捷键有哪些
- 全屏模式fullscreen
- 腾讯云IM-SDK集成(web端)完成IM登录
- 为什么我怎么也理解不了波粒二象性,是因为智商不够吗?
- 论文笔记:UCTransNet: Rethinking the Skip Connections in U-Net from a Channel-wisePerspective with Transf
- 赶紧学会!开发者愚人节怎么写代码。。。
- PowerQuery操作分类3
- API 测试利器 WireMock
- 影目科技获千万美元融资背后,挚文集团“落子”元宇宙
- 炖锅的蒸煮鸿蒙煮排骨煮多久能熟,排骨炖多长时间就熟了 排骨需要炖多久才会熟...
- QML一个漂亮的仪表盘
- linux 挂载常见错误,mount常见的错误。
- 深度linux live,LinuxDeepin/用LinuxLive USB Creator安装LinuxDeepin