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
标签:Shell,x86,fc36,001,64,updates,005,mariadb,php 来源: https://www.cnblogs.com/simplerude/p/16342765.html