shell脚本

shell脚本概述

shell脚本是利用shell的功能所写的一个程序,这个程序是使用可执行文件,将一些shell的语法和命令写在里面,搭配正则表达式,管道命令与重定向等功能,来达到我们所要的处理的目的

  • 将要执行的命令按顺序保存到一个文本文件
  • 给该文件可执行权限
  • 可结合各种Shell控制语句以完成更复杂的操作

shell脚本应用场景

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

shell脚本分类:

/bin/sh

/bin/Bash

/sbin/nologin

/bin/tcsh

/bin/csh
默认使用bash shell

shell脚本编程规范

编写第一个脚本

[root@localhost ~]# vim test.sh

#!/bin/bash   //声明
<<ABC    //注释
这是我第一个脚本
作者:xzw
ABC     //注释结束。必须和<<后的注释一致
echo "hello world"   //脚本内容

[root@localhost ~]# chmod +x test.sh  //赋予脚本执行权限
[root@localhost ~]# ./test.sh 
hello world

不添加权限可执行脚本:
bash test.sh
sh test.sh
source test.sh=. test.sh

  • bash -x test.sh :逐行检测语法问题
    在这里插入图片描述
  • bash -n test.sh :检查语法错误。
    在这里插入图片描述

重定向操作

重定向输入:
< :从指定的文件读取数据,而不是从键盘输入
重定向输出: 
> :将输出结果保存到指定文件,会覆盖文件原内容
>> :将输出结果追加到文件内的尾部
错误重定向: 
2> :将错误信息保存到指定文件,覆盖文件内容
2>> :将错误信息追加到指定文件中
&> :将标准输出、标准错误的内容保存到同一个文件中

shell脚本变量

shell变量用来存放系统和用户需要使用的特定参数。这些参数可以根据用户的设定或系统环境的变化而相应变化。

自定义变量

用户自己定义的变量,只在用户自己的shell环境中有效。

定义变量

变量名=变量值
变量名需要以字母或下划线开头。名称中不能出现特殊字符。

查看和引用变量值

通常在变量名前添加前导符号“$”。可以引用变量的值。使用echo命令查看变量,可以在一条echo查看多个变量值

[root@localhost ~]# aa=5
[root@localhost ~]# bb=6
[root@localhost ~]# echo $aa $bb
5 6

unset a :取消赋值。取消变量。取消之后即为空

看系统中所有变量:set

变量赋值的特殊操作
  1. 双引号 "
    双引号主要起界定字符串的作用,特别是当要赋值的内容中包括空格时,必须括起来。
    在双引号范围内,使用 $ 符号可以引用其他变量的值(变量的引用),从而能够直接调用现有的值来赋给新的变量。

  2. 单引号 ’
    当药赋值的内容中包括 $ " \ 等具有特殊含义的字符时,应使用单引号。单引号范围内无法引用其他变量的值。

  3. 反撇号 ``
    反撇号主要用于命令替换,允许将执行某个命令的屏幕输出结果赋值给变量,反撇号内的必须是可执行的命令行,否则将出错。也可以用$()

  4. read命令
    read可以给变量赋值。read可以结合-p来提示用户。

特殊变量

环境变量

环境变量是由linux系统提前创建的变量。主要用于设置用户的工作环境。环境变量的全局配置文件/etc/profile。在此文件中定义的变量作用于所有用户。env:看所有环境变量
查看当前搜索路径: echo $PATH

[root@localhost ~]# echo $PATH
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/root/bin

在这里插入图片描述
将脚本加入$PATH
在这里插入图片描述

位置变量

当执行命令行操作时,第一个字段表示命令或脚本程序名。其余的字符串按照从左到右的顺序依次赋值给位置变量。位置变量也称为位置参数。使用$1,$2…表示。

预定义变量

预定义变量是由Bash程序预先定义好的一类特殊变量,用户只能使用预定义变量,而不能创建新的预定义变量,也不能直接为预定义变量赋值。预定义变量使用“ ” 符 号 和 另 一 个 符 号 组 合 表 示 ”符号和另一个符号组合表示 #:表示命令行中位置参数的个数。常见预定义变量如下:

$? :表示上一个执行命令,如果上一个命令执行成功了。则输出0.没成功则非0
$*:表示所有位置参数的内容,这些内容当做一个整体$@:表示列出所有位置参数,但是是以单个的形式的列出
$?:表示前一条命令执行后的返回状态,返回值为О表示执行正确,返回任何非О值均表示执行出现异常。
$0:表示当前执行的脚本或程序的名称$$:表示返回当前进程的进程号
$!:返回最后一个后台进程的进程号

算数

expr 1 + 1  :2 加法
expr 2 \* 3  :6 除法
expr 6 / 3   :2 除数取整
expr 10 % 3  :1 除数取余。
echo “scale=2;10/3=3.33 :除数取两个小数点后
bc中**不能用 平方是^

在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值