本文共 4908 字,大约阅读时间需要 16 分钟。
重复性操作
交互性任务 批量事务处理 服务运行状态监控 定时任务执行shell:介于系统内核与用户之间,负责解释命令行
●用户登陆Linux系统时,自动加载一个Shell程序
●bash是Linux系统中默认使用的Shell程序 ●bash文件位于/bin/bash[root@localhost ~]# vim zz.sh以下内容:cd /bootpwdls -lh
相对路径
绝对路劲
sh:遇到错误就不会执行后面的脚本
bash:遇到错误仍会继续执行,把整个脚本走完一遍 source:也称为“点命令”,也就是一个点符号(.),是bash的内部命令 不需要x权限,也需要使用相对路径或绝对路径编写过程:
执行结果:
chmod +x zz.sh 即将进行编写,所以要先赋权标准输入:从该设备接收用户输入的数据
标准输出:通过该设备向用户输出数据 标准错误:通过该设备报告执行出错信息类型 | 设备文件 | 文件描述编号 | 默认设备 |
---|---|---|---|
标准输入 | /dev/stdin | 0 | 键盘 |
标准输出 | /dev/stdout | 1 | 显示器 |
标准错误输出 | /dev/stderr | 2 | 显示器 |
类型 | 操作符 | 用途 |
---|---|---|
重定向输入 | < | 从指定的文件读取数据 |
重定向输出 | > | 将标准输出结果 保存 到指定的文件,并且覆盖原有内容 |
重定向输出 | >> | 将标准输出结果 追加 到指定的文件的尾部,不覆盖原有内容 |
标准错误输出 | 2> | 将错误信息 保存 到指定的文件,并且覆盖原有内容 |
标准错误输出 | 2>> | 将错误信息 追加 到指定的文件的尾部,不覆盖原有内容 |
混合输出 | &> | 将标准输出、标准错误保存到同一文件中 |
混合输出 | 2>&1 | 将标准错误输出重定向到标准输出 |
管道符号操作“|”
两者相同:显示所有进程数
变量是会变化的值,不会变化的是常量
1、变量的作用
2、变量的类型
自定义变量格式
查看变量值格式:echo $变量名变量名=变量值 #变量名以字母或下划线开头,区分大小写,建议全大写等号(=)用来给变量赋值等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值删除赋值
unset 变量名 #取消/清除/释放变量set #查看系统所有自定义变量
set | grep AAA:查询变量AAA定义整数类型的变量 zzz不是整数,就没有变量
双引号:允许通过$符号引用其他变量值单引号:禁止引用其他变量值, $视为普通字符反撇号:命令替换,提取命令执行后的输出结果,``和$(…)作用相同赋值的操作 大括号 { } { } : 相当于分界符
*转义符 *
转义符跟双引号类似,当赋值的内容中包含空格时,使用转义符,可以输出变量值read [选项] 变量名
选择 | 释义 |
---|---|
-p | 定义提示用户信息 |
-n | 定义字符数(限制变量值的长度) |
-s | 不显示(不显示用户输入的内容) |
-t | 定义超时时间、默认单位为秒(限制用户输入变量值的超时时间) |
[root@localhost ~]# vim name.sh#!/bin/bashread -p "请输入你的名字:" nameecho "***********************"read -p "请输入他的名字:" name2echo "***********************"echo "你的名字"echo $nameecho "他的名字"echo $name2:wq[root@localhost ~]# chmod +x name.sh[root@localhost ~]# ./name.sh请输入你的名字:lisi***********************请输入他的名字:wangwu***********************你的名字lisi他的名字wangwu
当前的shell环境为第一层shell环境
使用bash命令进入子shell环境[root@localhost ~]# bash[root@localhost ~]# patree
当前shell环境为子shell环境
默认情况下,新定义的变量只在当前的Shell环境中有效,因此称为局部变量。当进入子程序或新的子Shell环境时,局部变量将无法再使用。可以通过内部命令export将指定的变量导出为全局变量,使用户定义的变量在所有的子Shell环境中能够继续使用。
格式1 :export 变量名 …格式2 :export 变量名=变量值 …
[root@localhost ~]# exit # 退出到原本的shell环境exit[root@localhost ~]# echo $PRODUCT # 查看变量PRODUCT的值为PythonPython[root@localhost ~]# bash # 进入到子shell环境[root@localhost ~]# echo $PRODUCT # 查看变量的值,无法显示 #说明我们的变量是局部变量,切换环境之后无法使用[root@localhost ~]# ---------------------------------------------------------------------------[root@localhost ~]# exit # 退出到原本的shell环境exit[root@localhost ~]# export PRODUCT # 将它输出为全局变量[root@localhost ~]# bash #切换至子shell环境[root@localhost ~]# echo $PRODUCT # 再次进行查看变量的值Python # 可以看到了[root@localhost ~]# # 设置全局变量完成
格式:expr 变量1 运算符 变量2 [运算符 变量3]…
加法运算:+减法运算:-乘法运算:\*除法运算:/求模(取余)运算:%
在这里插入代码片[root@localhost ~]# expr 2 + 24[root@localhost ~]# expr 3 / 2 //取整数1[root@localhost ~]# expr 1 / 2 0[root@localhost ~]# expr 5 % 2 //取余数1[root@localhost ~]# echo $ [ 2+2 ]$ [ 2+2 ][root@localhost ~]# echo $[ 2+2 ]4[root@localhost ~]# echo $[ 2**5 ] //2的5次方32[root@localhost ~]# a=3[root@localhost ~]# b=2[root@localhost ~]# echo $[ $a+$b ]5[root@localhost ~]# echo "3.14+2" | bc //计算带小数点的用bc计算器,5.14[root@localhost ~]# echo "2^5" | bc //bc计算器中的平方用的是^符号32
①PATH(路径环境变量)
echo $PATH #查看当前搜索路径PATH="$PATH:/root" #将/root目录添加到搜索路径export PATH="$PATH:/root" #输出为全局环境变量first.sh
②只读变量
用于变量值不允许被修改的情况 赋值只读无法更改变量值,取消只读变量,只能退出exit,重新连接;或者更改shell变量,比如更换bash环境即可 ③位置变量 当执行命令行操作时,第一个字段表示命令名或脚本程序名,其余的字符串参数按照从左到右的顺序依次赋值给位置变量。 $n∶ n为数字,s0代表命令本身,$1-$9代表带一个到第九个参数,十以上的参数需要使用大括号表示,比如第十个参数为s{10} ④预定义变量预定义变量是由Bash程序预先定义好的一类特殊变量,用户只能使用预定义变量,而不能创建新的预定义变量,也不能直接为预定义变量赋值。预定义变量使用“$”符号和另一个符号组合表示$#:表示命令行中位置参数的个数。$*:表示所有位置参数的内容,这些内容当做一个整体$@:表示列出所有位置参数,但是是以单个的形式的列出$?:表示前一条命令执行后的返回状态,返回值为0表示执行正确,返回任何非0值均表示执行出现异常。$0:表示当前执行的脚本或程序的名称$$:表示返回当前进程的进程号$!:返回最后一个后台进程的进程号
vim mybak.sh#!/bin/bashtime=backup-`date +%F`.tar.gztar zcf $time $* &> /dev/null #/dev/null表示的是一个黑洞文件,通常用于丢弃不需要的数据输出echo "已执行 $0 脚本,"echo "共完成 $# 个对象的备份"echo "具体内容包括: $*"
转载地址:http://ifqof.baihongyu.com/