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编程规范与变量的主要内容,如果未能解决你的问题,请参考以下文章