shell脚本1
Shell脚本(一)
- 概述
Shell的作用:命令解释器,“翻译官”
介于系统内核与用户之间,负责解释命令行
用户登录后默认使用的Shell程序,一般为 /bin/bash
不同Shell的内部指令、运行环境等会有所区别
Shell类型有:bsh、bash、csh、tcsh、ksh等
查看系统支持的shell
cat /etc/shells
主要有bash、tcsh(csh)
shell脚本:
也称为shell编程
把符合shell规范的命令或程序,按执行流程编写出来的文本文件
无需编译即可执行
执行脚本就是命令或程序批处理的过程
- 脚本的执行方式:
- 编写第一个脚本
[root@localhost ~]# Vim first.sh
cd /tmp
pwd
ls -l
执行脚本:
Chmod +x first.sh #给脚本添加执行权限
./first.sh #执行当前目录下的first.sh
脚本的执行方式
方式一:
直接写脚本路径执行(需添加X权限),打开子shell执行,不影响父shell环境
./first.sh 或 /root/first.sh
方式二:
bash/sh 脚本文件路径(可不加X权限),打开子shell执行,不影响父shell环境
bash ./first.sh 或 sh ./first.sh
方式三:. 或 source 脚本文件路径(可不加X权限),在当前shell中执行
. ./first.sh (一个点是当前shell第二个点是当前目录)或 source ./first.sh
注:脚本第一行一般会添加 #!/bin/bash,声明解释器,主要考虑脚本移植
调试脚本(排错):sh - x 脚本名称
- 重定向和管道
- 标准输入输出
重定向:改变输入或输出的位置为文件【可以使用 echo
命令,printf
命令,cat
命令(按下 Ctrl + D
提交)】
管道:把前一个命令执行的标准输出,作为后一个命令的标准输入
例如:
[root@localhost ~]# grep "bash$" /etc/passwd | awk -F: '{print $1,$7}'
grep "bash$" /etc/passwd:这部分命令使用 grep 工具在 /etc/passwd 文件中搜索以 bash 结尾的行。这个命令将匹配使用 bash 作为默认 shell 的用户。
awk -F: '{print $1,$7}':这部分命令使用 awk 工具来处理 grep 命令的输出。-F: 选项指定了字段的分隔符为 :,因为 /etc/passwd 文件中的每一行都是由冒号分隔的字段组成的。'{print $1,$7}' 告诉 awk 打印每行的第一个字段(用户名)和第七个字段(用户的shell)
整个命令的作用是从 /etc/passwd
文件中找出默认 shell 是 bash
的用户,并打印他们的用户名和默认 shell
awk 命令的选项有很多,以下是一些常用选项的简要说明:
- -F:指定输入字段的分隔符。
- -f:指定包含 awk 脚本的文件。
- -v var=value:定义 awk 的变量并赋值。
- -W keyword:指定关键字,例如 -W version 可以显示 awk 的版本信息。
- -i:在原始文件上进行编辑(类似 -i inplace)。
- -o:将输出重定向到文件。
- -F regex:指定一个正则表达式作为字段分隔符。
- -v:定义一个变量并初始化,例如 -v var=value。
- -c:检查脚本语法而不运行脚本。
- -f scriptfile:从文件中读取 awk 脚本。
- -o:输出文件名。
- 变量
- 定义变量就是在内存中指定一个空间,并赋值
使用变量的作用就是为了增加脚本或系统管理的灵活性
变量的类型:
自定义变量: 由用户自己定义、修改和使用 如:ABC
环境变量: 由系统维护,用于设置工作环境 如:PATH变量
预定义变量: Bash中内置的一类变量,变量名特定的保留变量
位置变量: 通过命令行给脚本程序传递参数,是一种预定义变量
定义一个新的变量
格式:变量名=变量值
变量名以字母或下划线开头,区分大小写,建议全大写
查看变量的值
格式:echo $变量名
变量赋值及引用时使用符号
双引号:允许通过$符号引用其他变量值
单引号:禁止引用其他变量值,$视为普通字符
反撇号:命令替换,提取命令执行后的输出结果
$():命令替换,命令嵌套是可替代反撇号
${}:引用变量,用于区分变量名与紧跟其后的字符串
从键盘输入内容为变量赋值
格式: read [-p "提示信息"] 变量名
变量可以参与整数运算
格式:expr 变量1 运算符 变量2 [运算符 变量3]
加法运算:+
减法运算: -
乘法运算: \*
除法运算: /
求模(取余)运算: %
环境变量:
由系统提前创建,用来设置用户的工作环境
配置文件: /etc/profile(保存变量)、~/.bash_profile
常见的环境变量:
PWD、PATH
USER 、SHELL、HOME
预定义变量:
$0(脚本名自身)、$1-$9(位置变量)、$?(上一个命令执行状态返回值)、$*(参数内容)、$#(位置参数的个数)
举例:
Vim test1.sh
echo $0
echo $1
echo $3
echo $*
echo $#
./test1.sh a b c d e f