Shell 脚本
#!/bin/bash # #!脚本声明
# file # 脚本说明
ls # 功能
pwd
reboot
逻辑判断
[ $USER = root ] && echo "you are admin" || echo "you are user"
# [ ] 逻辑判断,前后均有空格
# && 为 与 运算
# || 为 或 运算
[ `free -m | grep Mem: | awk '{print $4}'` -lt 1024 && echo "buzu" || echo "chongzu"
# 判断空闲内存是否充足
文件测试所用的参数
运算符 | 作用 |
---|---|
-d | 测试文件是否为目录类型 |
-e | 测试文件是否存在 |
-f | 判断是否为一般文件 |
-r | 测试当前用户是否有权限读取 |
-w | 测试当前用户是否有权限写入 |
-x | 测试当前用户是否有权限执行 |
可用的整数比较运算符
操作符 | 作用 |
---|---|
-eq | 是否等于 |
-ne | 是否不等于 |
-gt | 是否大于 |
-lt | 是否小于 |
-le | 是否等于或小于 |
-ge | 是否大于或等于 |
常见的字符串比较运算符
操作符 | 作用 |
---|---|
= | 比较字符串内容是否相同 |
!= | 比较字符串内容是否不同 |
-z | 判断字符串内容是否为空 |
ping
获取ip地址
ping -c 1 linuxcool.com | grep from | cut -d " " -f 4
# -c 几次
# -i 间隔多少秒
vim ping.sh
#!/bin/bash
ping -c 3 -i 0.2 -W 3 $1 >> /dev/null
if [ $? -eq 0 ] ; then
echo "$1 is On-line"
else
echo "$1 is Off-line"
fi
bash ping.sh 163.com
判断成绩
vim test.sh
#!/bin/bash
read -p "Please input your grade:" GRADE
if [ $GRADE -ge 85 ] && [ $GRADE -le 100 ]; then
echo "$GRADE is Great!"
elif [ $GRADE -ge 70 ] && [ $GRADE -lt 85 ]; then
echo "$GRADE is Pass."
else
echo "$GRADE is Fail."
fi
bash test.sh
猜大小
#!/bin/sh
PRICE=$( expr $RANDOM % 1000 )
TIMES=0
while true
do
read -p "Guess a INT number:" INT
let TIMES++
if [ $INT -eq $PRICE ]; then
echo "You are right:$INT"
echo "Guess $TIMES times"
exit 0
elif [ $INT -gt $PRICE ]; then
echo "High"
else
echo "Low"
fi
done
Case
#!/bin/bash
read -p "Enter:" KEY
case $KEY in
[a-z]|[A-Z])
echo "Zimu"
;;
[0-9])
echo "Number"
;;
*)
echo "Error"
esac
一次性任务
at 20:30
systemctl restart httpd
#按Ctrl+D结束编写任务
at -l #查看任务列表
atrim 任务序号 #删除任务
长期任务
crontab -l # 查看任务列表
crontab -e #创建任务
# 分 时 日 月 星期 命令
25 3 * * 1,3,5 /usr/bin/tar -czvf backup.tar.gz /home/wwwroot
# 每周1、3、5,3:25,备份
0 */2 * * 1-5 /usr/bin/rm -rf /tmp/*
# 周一到周五,每隔两个小时,清空/tmp
kvm-arm64
#!/bin/bash
ISOURL=$1
rm -rf /home/sandy/arm64.qcow2
qemu-img create -f qcow2 /home/sandy/arm64.qcow2 20G
virsh undefine arm64 --nvram
install_from_iso_vga_UOS() {
virt-install -n arm64 --memory 2048 --arch aarch64 --vcpus 2 \
--disk /home/sandy/arm64.qcow2,device=disk,bus=virtio \
--os-type=generic \
--boot uefi \
--video vga \
--noautoconsole \
--noreboot \
--cdrom $ISOURL
}
install_from_iso_vga_UOS
写入多行文本到文件
cat >/etc/product-info <<EOF
## cat >>为追加
UOS device Enterprise V20 $(uname -m) $(date +%Y%m%d)
EOF
选择执行
#!/bin/bash
echo ""
echo " 1: ssh 访问 自动构建服务器 "
echo " 2: ssh 访问 UOS ISO存储服务器 "
echo " 3: 浏览器打开 UOS ISO存储服务器 "
echo " 4: 上传UOS ISO镜像到存储服务器"
echo " 5: 打开 虚拟机管理器virt-manager"
echo " 6: ssh 访问 my vps"
echo ""
read -p "Please input the choice:" idx
##定义函数
sync_upload_iso(){
echo "input the iso url: "
read ISOURL
rsync -avz --progress $ISOURL -e ssh [email protected]:/data/iso/uos/device/snapshots/
if [[ $ISOURL =~ "iso" ]]; then
# sudo apt install rsync -y
rsync -avz --progress $ISOURL -e ssh [email protected]:/data/iso/uos/device/snapshots/
fi
}
#if [[ -z "$idx"]];then
# echo "no choice,exit"
if [[ '1' = "$idx" ]];then
eval "ssh [email protected] -t 'cd /data/soft/isobuilder/; bash --login'"
elif [[ '2' = "$idx" ]];then
eval "ssh [email protected] -t 'cd /data/iso/uos/; bash --login'"
elif [[ '3' = "$idx" ]];then
eval "xdg-open 'http://ip'"
elif [[ '4' = "$idx" ]];then
eval "sync_upload_iso"
elif [[ '5' = "$idx" ]];then
eval "virt-manager"
elif [[ '6' = "$idx" ]];then
eval "ssh [email protected] -p 22"
else
echo "no choice,exit!"
fi
echo ""