SHELL脚本编程规范及变量

SHELL脚本编程规范及变量

shell脚本就是将要执行的命令按顺序保存到一个文本文件中,并给该文件可执行权限。
常用于重复性操作,批量事务处理,自动化运维,服务运行状态监控,定时任务执行
我们可以简单的创建一个shell脚本
在启动shell脚本时有三种启动脚本方式
1."./abc.sh"要求文件本身具有执行权限(x)
2,“source” ,和 “sh”不用权限也可以执行脚本sh不会改变你所在位置

[root@localhost opt]# vim /abc.sh
#!/bin/bash
cd /boot/    cd 到boot目录
pwd          自己的绝对路径
ls -lh vml*  
1.root@localhost opt]# ./abc.sh
/boot
-rwxr-xr-x. 1 root root 5.7M 10月 24 00:05 vmlinuz-0-rescue-01d65b76533349e685d5fd239c2a9f54
-rwxr-xr-x. 1 root root 5.7M 8月  23 2017 vmlinuz-3.10.0-693.el7.x86_64
2.[root@localhost opt]# source abc.sh
/boot
-rwxr-xr-x. 1 root root 5.7M 10月 24 00:05 vmlinuz-0-rescue-01d65b76533349e685d5fd239c2a9f54
-rwxr-xr-x. 1 root root 5.7M 8月  23 2017 vmlinuz-3.10.0-693.el7.x86_64
3.root@localhost opt]# sh abc.sh
/boot
-rwxr-xr-x. 1 root root 5.7M 10月 24 00:05 vmlinuz-0-rescue-01d65b76533349e685d5fd239c2a9f54
-rwxr-xr-x. 1 root root 5.7M 8月  23 2017 vmlinuz-3.10.0-693.el7.x86_64

管道与重定向

管道操作为不同命令之间的协同工作提供了一种机制,位于管道符号“|”左侧的命令输出结果,将作为右侧命令的输入(处理对象),同一行命令中可以有多个管道。

[root@localhost ~]# df -hT | grep "/$" |awk '{print $6}'
22%

重定向操作

标准输入:默认的设备是键盘,文件编号为0命令将从标准输入文件中读取在执行过程中需要输入数据
标准输出:默认的设备在显示器,文件编号为1 ,命令将执行后的输出结果发送到标准输出文件
标准错误:默认的设备是显示器,文件编号为2. 命令将执行期间的各种错误信息发送到错误文件

自定义变量
变量名=变量值 ,等号两边没有空格,变量名称需要以字母或下划线开头名称中不要有特殊符号

[root@localhost ~]# abc=888
[root@localhost ~]# echo $abc
888

双引号:主要起界定字符串的作用
单引号:禁止引用其他变量值,$视为普通字符
反撇号``:命令替换,提取命令执行之后的输出结果

[root@localhost ~]# echo $weixin
weixin 6.0
root@localhost ~]# weixin=‘weixin $server’
[root@localhost ~]# echo $weixin
weixin $server
root@localhost ~]# ls -hl which uesradd
/usr/bin/which: no uesradd in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)

read命令变量赋值加-p使交相互操作界面更加友好,以提高以用性

#!/bin/bash
read -p "请输入一个整数"
root@localhost ~]# sh aaa.sh\
> 
请输入一个整数10

运算变量运算
在bash shell环境中只能进行简单的整数计算,整数
计算主要通过内部命令expr进行
(+)加 、(-)减 、(*)乘 、(/)除 、(%)取余
注意在乘法运算过程中不能使用(``*)否则将被当成文件的通配符

请输入一个整数10
[root@localhost ~]# x=10
[root@localhost ~]# y=20
[root@localhost ~]# expr $x + $y
30
[root@localhost ~]# expr $y - $x
10
[root@localhost ~]# expr $x x $y
expr: 语法错误
[root@localhost ~]# expr $x \* $y
200

特殊环境变量
env命令可以查看到当前工作环境下的环境变量,
变量user 表示用户名称 、home表示用户的宿主目录、lang表示语言个字符集、pwd表示当前所在工作目录、path表示命令搜索路径
预定义变量
$#:表示命令行中位置参数个数
$*: 表示所有位置参数的内容
$?:上一行命令执行后返回的状态,当返回状态值为0时表示执行正常,非0值表示执行异常或出错


```bash
#!/bin/bash
Secho "共完成$#个对象"
echo "具体内容包括:$*"

发布了44 篇原创文章 · 获赞 10 · 访问量 1023

猜你喜欢

转载自blog.csdn.net/weixin_45725244/article/details/103244898