shell脚本编写


一、shell script概念

可以将shell终端解释器作为人与计算机硬件之间的“翻译官”,作为用户与Linux系统内部的通信媒介。

shell脚本命令的工作方式:

1.交互式(Interactive):用户每输入一条命令就立刻执行。
2.批处理(Batch):由用户事先编写好一个完整的shell脚本,脚本会一次性执行完所有的命令。

在shell script撰写中的注意事项:

1.命令的执行是从上而下、从左而右进行的。
2.命令、选项与参数间的多个空格都会被忽略掉。
3.空白行也将被忽略掉,并且按“Tab”键所生成的空白同样被视为空格键。
4.如果读取到一个Enter符号(CR),就尝试开始运行该行(或该串)命令。
5.如果一行的内容太多,则可以使用“[Enter]”来延伸至下一行。
6.“#”可作为注解。任何加在 # 后面的数据将全部被视为注解文字而被忽略

配置vscode shell编程环境详细方法:
https://blog.csdn.net/zz153417230/article/details/103176747

查看当前系统支持哪些版本的shell

[root@localhost ~]# cat /etc/shells 
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin

Linux默认的shell是GNU bash(Bourne Again shell).
默认的Bash提示符为美元符号$。

二、基本语法

1、首行宣告语法

第一行要使用 #!/bin/bash 宣告这个shell脚本使用的shell名称。
宣告后,当这个程序被运行时,就能加载 bash 相关环境配置文件。
如果没有配置,该程序可能因为系统无法判断该程序需要什么shell而会无法运行。

2、注释语法

整个script语句中,除了第一行 #! 是用来声明shell之外,其他的 # 都是注释。

注意:一定要养成注释说明脚本内容、功能、作者、联系方式等的习惯。这样有助于未来程序的改写和调试。

3、变量输入语法

可以使用read命令撰写脚本,由执行用户输入对应信息。

#!/bin/bash
# Program:
# User  inputs his first name and last name.
# Program shows his full name.
# History:
# 2021/11/17   hqs     First release

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH

read -p "Please input your first name:"  firstname      # 提示输入用户名
read -p "Please input your last name:"  lastname   
echo -e "\nYour full name is : $firstname   $lastname"

4、利用date进行文件创建

基于date实现将每天的数据都备份成不同的文件名,这样可以让旧的数据也被保存下来而不被覆盖。

#!/bin/bash
# 让使用者输入文件名称,并获取用户名变量
echo -e "I will use 'touch' command to create 3 files. "
read -p "please input your filename: " fileuser

echo -e "当前输入的用户名:$fileuser"

# 为了避免用户随意按enter,利用变量功能分析文件名是否设置
filename=${fileuser:-"filename"}

echo -e "当前已接受的文件名:$filename"

# 开始利用date命令来取得所需要的文件名
date1=$(date --date='2 days ago' +%Y%m%d-%H:%M:%S)   # 前两天的日期,注意+号前有空格
date2=$(date --date='1 days ago' +%Y%m%d-%H:%M:%S)   # 前一天的日期,注意+号前有空格
date3=$(date +%Y%m%d-%H:%M:%S)      # 今天的日期

# 配置文件名
file1=${filename}${date1}
file2=${filename}${date2}
file3=${filename}${date3}

# 创建文件
touch "$file1"
echo -e "已经创建 $file1"
touch "$file2"
echo -e "已经创建 $file2"
touch "$file3"
echo -e "已经创建 $file3"

5、数值运算

可以使用declare来定义变量的类型。
利用 $(计算式) 来进行数值运算。

注意:bash shell 系统默认只支持到整数。