Shell编程规范与变量

Posted 还行少年

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Shell编程规范与变量相关的知识,希望对你有一定的参考价值。


前言

随着Linux系统在企业的应用越来越多,服务器的自动化管理也变得越来越重要。


提示:以下是本篇文章正文内容,下面案例可供参考

一、Shell脚本编程规范

在一些复杂的Linux维护工作中,大量重复性的输入和交互操作不但费时费力,而且容易出错,而编写一个恰到好处的shell脚本,可以批量处理、自动化地完成一系列维护任务,大大减轻管理员的负担

1 Shell脚本的概念

Shell脚本就是将要执行的命令按顺序保存到一个文本文件,并给与该文件可执行权限,方便一次性执行的一个程序文件。主要是方便管理员进行设置或管理,可结合各种shell控制语句以完成更复杂的操作

2 Shell脚本应用场景

  • 重复性操作
  • 交互性任务
  • 批量事务处理
  • 服务运行状态监控
  • 定时任务执行

3 Shell编程规范

/bin/bash是目前大多数Linux版本采用的默认Shell脚本

3.1 查看当前系统支持的Shell脚本种类

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

3.2 创建一个脚本文件

[root@localhost ~]# vi test.sh
[root@localhost ~]# cat test.sh 
#!/bin/bash   //声明解释器
cd /boot    //切换到/boot
pwd         //查看当前目录
[root@localhost ~]# chmod +x test.sh       //赋予执行权限
[root@localhost ~]# ./test.sh      //以相对路径执行
/boot          

3.3 执行Shell脚本

  • 赋予执行权限
[root@localhost ~]# chmod +x test.sh       //赋予执行权限
[root@localhost ~]# ./test.sh      //以相对路径执行
/boot   
[root@localhost ~]# /root/test.sh   //以绝对路径执行
/boot  
  • 不赋予执行权限
[root@localhost ~]# chmod -x test.sh    //去除执行权限
[root@localhost ~]# sh test.sh      //sh在代码错误的情况下,不会继续执行下面的代码
/boot
[root@localhost ~]# bash test.sh     //bash在代码错误的情况下,会执行下面的代码
/boot 
[root@localhost ~]# source test.sh    //在当前shell环境执行,而不是新开一个shell环境
/boot
[root@localhost boot]# cd
[root@localhost ~]# . test.sh    //在当前shell环境执行,而不是新开一个shell环境
/boot
[root@localhost boot]# 

4 管道和重定向

4.1 管道

同一行命令中可以可以多个管道,位于管道符号前“|“左侧的命令输出的结果,将作为右侧命令的输入

cmd1 命令1 | cmd2 命令2 【...|cmdn 命令n】

4.2 重定向操作

4.2.1 重定向输入

[root@localhost ~]# passwd zhangsan < passwd.txt   //直接从文本中获取密码
更改用户 zhangsan 的密码 。
新的 密码:无效的密码: 密码少于 8 个字符
重新输入新的 密码:passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]# 

4.2.2 重定向输出

重定向输出使用”>“或”>>“操作符号

[root@localhost ~]# touch test.txt     //创建一个文件
[root@localhost ~]# echo 123 >> test.txt    //追加123
[root@localhost ~]# cat test.txt
123
[root@localhost ~]# echo 456 > test.txt   //覆盖
[root@localhost ~]# cat test.txt 
456
[root@localhost ~]# echo 123 >> test.txt    //追加
[root@localhost ~]# cat test.txt 
456
123
[root@localhost ~]# 

4.2.3 错误重定向

重定向输出使用”2>“或”2>>“操作符号

[root@localhost ~]# ls 1    //查看不存在的目录或文件
ls: 无法访问1: 没有那个文件或目录
[root@localhost ~]# ls 1 2> 1.txt     //覆盖
[root@localhost ~]# cat 1.txt 
ls: 无法访问1: 没有那个文件或目录 
[root@localhost ~]# ls 1 2>> 1.txt   //追加
[root@localhost ~]# cat 1.txt 
ls: 无法访问1: 没有那个文件或目录
ls: 无法访问1: 没有那个文件或目录
[root@localhost ~]# 

二、Shell脚本变量

1 自定义变量

变量名:字母、数字、下划线组成,不能以数字开头,并且区分大小写
不能是特殊符号

变量名=变量值

自定义变量只在此shell环境生效

2 环境变量

在这里插入图片描述

3 位置变量

$n:n为数字,$0代表命令本身,$1-$9代表带一个到第九个参数,十以上的参数需要使用大括号表示,比如${10}

4 预定义变量

$?  上一条命令执行是否成功 0  成功  非零 失败
$#   显示有几个位置变量
$$   限制当前进程的pid号
$!    返回最后一个后台进程的进程号
$*    表示所有位置参数的内容,这些内容当作一个整体
$@  表示列出所有位置参数,是把每个参数区分对待

以上是关于Shell编程规范与变量的主要内容,如果未能解决你的问题,请参考以下文章

shell编程规范与变量

shell脚本——shell编程规范与变量

Shell编程规范与变量

Shell编程规范与变量

Shell编程规范与变量

理论+实操 :shell编程规范与变量————理论讲解,新手必看