Bash Shell 脚本100例-001~005


001.Hello world

#!/bin/bash
# 一个bash脚本的标准开头

echo hello world
# 现在的echo很智能,即使中间有空格,也可以正常输出
# 当变量的值有空格时,为了避免出错,必须用引号扩起来

echo “hello world”
# 被双引号扩起来的字符性质不会发生改变。如:$表示变量的值、反引号表示引用的命令...

echo ‘hello world’
# 被单引号扩起来的都是普通字符,即使是特殊的字符也不再有特殊的含义

查看echo的man帮助:
1. help echo
2. /bin/echo —help

运行脚本:

[root@fedora ~]# ./helloworld.sh 
hello world
“hello world”
‘hello world’

002.奇偶判断

#! /bin/bash
# 判断输入的整数是奇数还是偶数
clear
# echo "Please enter a number"
echo -n "Please enter a number:"
read x
y=`expr $x % 2`
if test $y -eq 0 ; then
	echo "Number is even"
else
	echo "Numner is odd"
fi

echo -n 输出后不换行
read x 读取键盘的输入,并把它保存到变量x中
expr 计算表达式的值
变量x在使用时前面要加$
在算数运算符中:
% 取余
* 乘
/ 除
test 检查文件类型并比较值
-eq 比较两个整数,若两数相等,则返回true
if 和 then 若写在同一行,之间需用 ; 隔开

反引号:
如果需要调用命令的输出,或把命令的输出赋予变量,则命令必须使用反引号包含,这条命令才会执行

运行脚本:

[root@fedora ~]# ./evenodd.sh 
Please enter a number:7
Numner is odd
[root@fedora ~]# ./evenodd.sh 
Please enter a number:6
Number is even

003.添加用户

#! /bin/bash
# 通过位置变量来创建新用户
# $1是第一个参数,$2是第二个参数...
# 在使用时,将第一个参数设置为用户名,第二个参数设置为密码
useradd $1
echo "$2" | passwd --stdin "$1"

# 遗留问题
# 1.如果执行脚本的用户不是root,应当提示并退出
# 2.如果用户提供的参数不是两个,应当提示并退出
# 3.如果用户已经存在,应当提示并退出
# 4.屏蔽useradd和passwd命令提示使用自定义的提示信息

useradd -p 加密后的新账户密码

运行脚本:

[root@fedora ~]# ./useradd.sh Bob 123456
更改用户 Bob 的密码 。
passwd:所有的身份验证令牌已经成功更新。

004.备份多个目录

#! /bin/bash
# 备份多个目录到NFS中

# 设置要备份的目录
backup_files="/home /var/spool/mail /etc /root /boot /opt"

# 设置存储备份文件的目录
dest=/mnt/backup

# 生成归档文件名
day=$(date +%F)
hostname=$(hostname -s)
archive_file="$hostname-$day.tgz"

# 打印开始的状态信息
echo "Backing up $backup_files to $dest/$archive_file"
date
echo

# 使用tar命令来进行备份
# echo "tar -czf $dest/$archive_file $backup_files"
tar -czf $dest/$archive_file $backup_files

# 打印结束的状态信息
echo 
echo "Backup finished"
date

# 列出在$dest中的文件以检查文件大小
ls -lh $dest

# 后续操作
# 检查脚本执行无误后,使用crontab -e 编写计划任务,执行备份
[root@fedora ~]# ./backup.sh 
Backing up /home /var/spool/mail /etc /root /boot /opt to /mnt/backup/fedora-2022-06-04.tgz
2022年 06月 04日 星期六 20:38:35 CST

tar: 从成员名中删除开头的“/”
tar: 从硬连接目标中删除开头的“/”

Backup finished
2022年 06月 04日 星期六 20:39:15 CST
总用量 342M
-rw-r--r--. 1 root root 342M  6月  4 20:39 fedora-2022-06-04.tgz

005.内卷的安装软件

install-v1.sh

#! /bin/bash
# 一键部署LAMP软件包
# 使用yum来进行安装,需要事先部署好yum源

yum -y install httpd
yum -y install mariadb mariadb-devel mariadb-server
yum -y install php php-mysql

systemctl enable httpd mariadb
systemctl start httpd mariadb 
[root@fedora ~]# ./install-v1.sh 
上次元数据过期检查:0:48:18 前,执行于 2022年06月05日 星期日 10时34分30秒。
软件包 httpd-2.4.53-1.fc36.x86_64 已安装。
依赖关系解决。
无需任何处理。
完毕!
上次元数据过期检查:0:48:20 前,执行于 2022年06月05日 星期日 10时34分30秒。
依赖关系解决。
================================================================================
 软件包                           架构    版本                   仓库      大小
================================================================================
安装:
 mariadb                          x86_64  3:10.5.16-1.fc36       updates  1.6 M
 mariadb-devel                    x86_64  3:10.5.16-1.fc36       updates  1.0 M
 mariadb-server                   x86_64  3:10.5.16-1.fc36       updates   11 M
安装依赖关系:
 mariadb-common                   x86_64  3:10.5.16-1.fc36       updates   31 k
 mariadb-connector-c-devel        x86_64  3.2.6-1.fc36           fedora    55 k
 mariadb-errmsg                   x86_64  3:10.5.16-1.fc36       updates  214 k
 mysql-selinux                    noarch  1.0.4-4.fc36           fedora    35 k
 openssl-devel                    x86_64  1:3.0.3-1.fc36         updates  2.9 M
 perl-DBD-MariaDB                 x86_64  1.22-1.fc36            updates  151 k
 perl-DBI                         x86_64  1.643-11.fc36          fedora   704 k
 perl-File-Copy                   noarch  2.35-486.fc36          fedora    25 k
 perl-Math-BigInt                 noarch  1:1.9998.30-1.fc36     updates  199 k
 perl-Math-Complex                noarch  1.59-486.fc36          fedora    52 k
 perl-Sys-Hostname                x86_64  1.23-486.fc36          fedora    22 k
 zlib-devel                       x86_64  1.2.11-31.fc36         fedora    44 k
安装弱的依赖:
 mariadb-backup                   x86_64  3:10.5.16-1.fc36       updates  6.5 M
 mariadb-connector-c-doc          noarch  3.2.6-1.fc36           fedora    98 k
 mariadb-cracklib-password-check  x86_64  3:10.5.16-1.fc36       updates   16 k
 mariadb-gssapi-server            x86_64  3:10.5.16-1.fc36       updates   19 k
 mariadb-server-utils             x86_64  3:10.5.16-1.fc36       updates  214 k

事务概要
================================================================================
安装  20 软件包

总下载:25 M
安装大小:127 M

完毕!
上次元数据过期检查:0:48:59 前,执行于 2022年06月05日 星期日 10时34分30秒。
未找到匹配的参数: php-mysql
错误:没有任何匹配: php-mysql
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
Created symlink /etc/systemd/system/mysql.service → /usr/lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/mysqld.service → /usr/lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/multi-user.target.wants/mariadb.service → /usr/lib/systemd/system/mariadb.service.

查询一下 php-mysql ,安装php-mysqlnd

[root@fedora ~]# dnf search php-mysql
上次元数据过期检查:0:49:31 前,执行于 2022年06月05日 星期日 10时34分30秒。
============================= 名称 匹配:php-mysql =============================
php-mysqlnd.x86_64 : A module for PHP applications that use MySQL databases

[root@fedora ~]# dnf -y install php-mysqlnd
上次元数据过期检查:0:54:55 前,执行于 2022年06月05日 星期日 10时34分30秒。
依赖关系解决。
================================================================================
 软件包              架构           版本                  仓库             大小
================================================================================
安装:
 php-mysqlnd         x86_64         8.1.6-1.fc36          updates         217 k
安装依赖关系:
 php-common          x86_64         8.1.6-1.fc36          updates         828 k
 php-pdo             x86_64         8.1.6-1.fc36          updates         116 k
 ......

完毕!

将脚本中的 php-mysql 修改为 php-mysqlnd 

再次执行测试

[root@fedora ~]# ./install-v1.sh 
上次元数据过期检查:0:57:17 前,执行于 2022年06月05日 星期日 10时34分30秒。
软件包 httpd-2.4.53-1.fc36.x86_64 已安装。
依赖关系解决。
无需任何处理。
完毕!
上次元数据过期检查:0:57:18 前,执行于 2022年06月05日 星期日 10时34分30秒。
软件包 mariadb-3:10.5.16-1.fc36.x86_64 已安装。
软件包 mariadb-devel-3:10.5.16-1.fc36.x86_64 已安装。
软件包 mariadb-server-3:10.5.16-1.fc36.x86_64 已安装。
依赖关系解决。
无需任何处理。
完毕!
上次元数据过期检查:0:57:19 前,执行于 2022年06月05日 星期日 10时34分30秒。
软件包 php-8.1.6-1.fc36.x86_64 已安装。
软件包 php-mysqlnd-8.1.6-1.fc36.x86_64 已安装。
依赖关系解决。
无需任何处理。
完毕!

install-v2.sh

#! /bin/bash
# 在安装之前检查一下是否已安装
pkgarr=(httpd mariadb mariadb-devel mariadb-server php php-mysqlnd)
# dnf -y update
for i in ${pkgarr[*]}; do
	# echo $i
	rpm -q $i &>/dev/null
	if [ $? == 0 ]; then
		echo Package $i already installed
	else
		echo $i is not installed !
		dnf -y install $i
	fi
done
[root@fedora ~]# ./install-v2.sh 
Package httpd already installed
mariadb is not installed !
上次元数据过期检查:1:07:13 前,执行于 2022年06月05日 星期日 10时34分30秒。
依赖关系解决。
================================================================================
 软件包                 架构        版本                     仓库          大小
================================================================================
安装:
 mariadb                x86_64      3:10.5.16-1.fc36         updates      1.6 M
安装依赖关系:
 mariadb-common         x86_64      3:10.5.16-1.fc36         updates       31 k
 perl-Sys-Hostname      x86_64      1.23-486.fc36            fedora        22 k

完毕!
mariadb-devel is not installed !
上次元数据过期检查:1:08:36 前,执行于 2022年06月05日 星期日 10时34分30秒。
依赖关系解决。
================================================================================
 软件包                       架构      版本                   仓库        大小
================================================================================
安装:
 mariadb-devel                x86_64    3:10.5.16-1.fc36       updates    1.0 M
安装依赖关系:
 mariadb-connector-c-devel    x86_64    3.2.6-1.fc36           fedora      55 k
 openssl-devel                x86_64    1:3.0.3-1.fc36         updates    2.9 M
 zlib-devel                   x86_64    1.2.11-31.fc36         fedora      44 k
安装弱的依赖:
 mariadb-connector-c-doc      noarch    3.2.6-1.fc36           fedora      98 k

完毕!
mariadb-server is not installed !
上次元数据过期检查:1:09:09 前,执行于 2022年06月05日 星期日 10时34分30秒。
依赖关系解决。
================================================================================
 软件包                           架构    版本                   仓库      大小
================================================================================
安装:
 mariadb-server                   x86_64  3:10.5.16-1.fc36       updates   11 M
安装依赖关系:
 mariadb-errmsg                   x86_64  3:10.5.16-1.fc36       updates  214 k
 mysql-selinux                    noarch  1.0.4-4.fc36           fedora    35 k
 perl-DBD-MariaDB                 x86_64  1.22-1.fc36            updates  151 k
 perl-DBI                         x86_64  1.643-11.fc36          fedora   704 k
 perl-File-Copy                   noarch  2.35-486.fc36          fedora    25 k
 perl-Math-BigInt                 noarch  1:1.9998.30-1.fc36     updates  199 k
 perl-Math-Complex                noarch  1.59-486.fc36          fedora    52 k
安装弱的依赖:
 mariadb-backup                   x86_64  3:10.5.16-1.fc36       updates  6.5 M
 mariadb-cracklib-password-check  x86_64  3:10.5.16-1.fc36       updates   16 k
 mariadb-gssapi-server            x86_64  3:10.5.16-1.fc36       updates   19 k
 mariadb-server-utils             x86_64  3:10.5.16-1.fc36       updates  214 k

完毕!
php is not installed !
上次元数据过期检查:1:28:09 前,执行于 2022年06月05日 星期日 10时34分30秒。
依赖关系解决。
=====================================================================================
 软件包                  架构          版本                     仓库            大小
=====================================================================================
安装:
 php                     x86_64        8.1.6-1.fc36             updates         15 k
安装依赖关系:
 nginx-filesystem        noarch        1:1.22.0-1.fc36          updates         10 k
 php-common              x86_64        8.1.6-1.fc36             updates        828 k
安装弱的依赖:
 php-cli                 x86_64        8.1.6-1.fc36             updates        5.3 M
 php-fpm                 x86_64        8.1.6-1.fc36             updates        1.8 M
 php-mbstring            x86_64        8.1.6-1.fc36             updates        518 k
 php-opcache             x86_64        8.1.6-1.fc36             updates        613 k
 php-pdo                 x86_64        8.1.6-1.fc36             updates        116 k
 php-sodium              x86_64        8.1.6-1.fc36             updates         59 k
 php-xml                 x86_64        8.1.6-1.fc36             updates        211 k

完毕!
php-mysqlnd is not installed !
上次元数据过期检查:1:28:15 前,执行于 2022年06月05日 星期日 10时34分30秒。
依赖关系解决。
=====================================================================================
 软件包               架构            版本                    仓库              大小
=====================================================================================
安装:
 php-mysqlnd          x86_64          8.1.6-1.fc36            updates          217 k

完毕!

再次运行查看

[root@fedora ~]# ./install-v2.sh 
Package httpd already installed
Package mariadb already installed
Package mariadb-devel already installed
Package mariadb-server already installed
Package php already installed
Package php-mysqlnd already installed

原创文章,作者:254126420,如若转载,请注明出处:https://blog.ytso.com/272616.html

(0)
上一篇 2022年7月9日
下一篇 2022年7月9日

相关推荐

发表回复

登录后才能评论