Shell脚本编程--管道与重定向、自定义变量、特殊变量

本文介绍了Linux Shell脚本编程,包括管道与重定向操作,如管道协同命令和重定向输入输出。此外,详细讲解了Shell脚本中的变量,如自定义变量、环境变量、位置变量和预定义变量的使用及数据类型。
摘要由CSDN通过智能技术生成


  shell脚本就是将要执行的命令按顺序保存到一个文本文件中,并给该文件可执行权限,方便一次性执行的一个程序文件。shell编程并不用与应用程序的开发,主要用在系统的管理方面。常用于重复性的操作、批量事物的处理、自动化运维、服务运行状态监控和定时执行任务等场景中。

shell脚本编程规范

  在Linux系统中shell脚本是一种特殊的应用程序,它介于系统内核和用户之间,充当“命令解释器”的作用,负责接收用户输入的命令,进行解释,在交给系统内核执行,并输出结果。
  常见的shell解释器程序有很多种,可通过/etc/shells查看系统支持的shell脚本种类,bash为大多数Linux系统默认采用的shell脚本,以下均基于bash的shell环境。

[root@localhost ~]# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
[root@localhost ~]# 

  shell脚本就是将要执行的命令按顺序保存到一个文本文件中,并给该文件可执行权限。创建一个shell脚本如下:

[root@localhost ~]# vi first.sh
#!/bin/bash                    ##第一行为特殊的脚本声明,表示后面的语句使用bash解释
#注释                         ##注释信息
cd /boot/
echo "当前所在目录为:"
pwd
echo "其中以vml开头的文件信息如下:"
ls -lh vml*
保存退出

[root@localhost ~]# ./first.sh       ##执行脚本方法1,需要执行权限,不会切换路径
-bash: ./first.sh: 权限不够
[root@localhost ~]# sh first.sh       ##执行脚本方法2,不需要执行权限,不会切换路径
当前所在目录为:
/boot
其中以vml开头的文件信息如下:
-rwxr-xr-x. 1 root root 6.5M 7月  16 2020 vmlinuz-0-rescue-8d3301d2bdb44ac8b7bdf8d094ca8607
-rwxr-xr-x. 1 root root 6.5M 8月   8 2019 vmlinuz-3.10.0-1062.el7.x86_64
[root@localhost ~]# source first.sh    ##执行脚本方法3,不需要执行权限,会切换路径,到/boot目录下了
当前所在目录为:
/boot
其中以vml开头的文件信息如下:
-rwxr-xr-x. 1 root root 6.5M 7月  16 2020 vmlinuz-0-rescue-8d3301d2bdb44ac8b7bdf8d094ca8607
-rwxr-xr-x. 1 root root 6.5M 8月   8 2019 vmlinuz-3.10.0-1062.el7.x86_64
[root@localhost boot]# cd 
[root@localhost ~]# . first.sh         ##执行脚本方法4,与方法3一样
当前所在目录为:
/boot
其中以vml开头的文件信息如下:
-rwxr-xr-x. 1 root root 6.5M 7月  16 2020 vmlinuz-0-rescue-8d3301d2bdb44ac8b7bdf8d094ca8607
-rwxr-xr-x. 1 root root 6.5M 8月   8 2019 vmlinuz-3.10.0-1062.el7.x86_64
[root@localhost boot]# cd
[root@localhost ~]# vi first.sh
[root@localhost ~]# chmod +x first.sh
[root@localhost ~]# ./first.sh
当前所在目录为:
/boot
其中以vml开头的文件信息如下:
-rwxr-xr-x. 1 root root 6.5M 7月  16 2020 vmlinuz-0-rescue-8d3301d2bdb44ac8b7bdf8d094ca8607
-rwxr-xr-x. 1 root root 6.5M 8月   8 2019 vmlinuz-3.10.0-1062.el7.x86_64
[root@localhost ~]# 

管道与重定向

  由于执行脚本程序,大部分操作都在后台执行,不需要用户干预。因此,我们需要学会使用管道和重定向I/O操作去提取和过滤信息。

管道操作

  管道操作可以使不同命令之间协同操作,管道符号左侧的结果作为右侧命令的处理对象

[root@localhost ~]# cat /etc/passwd |awk -F: '{print $1,$7}'   ##awk表示取列,-F:表示以:分隔,$1表示第一列
root /bin/bash
bin /sbin/nologin
dbus /sbin/nologin
polkitd /sbin/nologin
sshd /sbin/nologin
postfix /sbin/nologin
chrony /sbin/nologin
z /bin/bash
[root@localhost ~]# df -Th |awk '{print $1,$6}'       ##没有-F 表示以空格或制表位为分隔
文件系统 已用%
devtmpfs 0%
tmpfs 0%
tmpfs 1%
tmpfs 0%
/dev/sda5 4%
/dev/sda2 1%
/dev/sda1 7%
tmpfs 0%
[root@localhost ~]# 

重定向操作

用户操作系统处理信息的

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值