45 lines
1.1 KiB
Bash
Executable File
45 lines
1.1 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# 保存当前工作目录
|
|
original_dir=$(pwd)
|
|
|
|
# 检查是否为root用户,若非则使用sudo重新执行脚本
|
|
if [[ $EUID -ne 0 ]]; then
|
|
echo "检测到非root权限,正在通过sudo提升权限..."
|
|
exec sudo -E bash -c "cd \"$original_dir\" && \"$0\""
|
|
fi
|
|
|
|
# 确保切换到原目录(防止路径错误)
|
|
cd "$original_dir" || {
|
|
echo "无法切换至目录:$original_dir"
|
|
exit 1
|
|
}
|
|
|
|
# 启用nullglob以防止无匹配时的字面量输出
|
|
shopt -s nullglob
|
|
deb_packages=( ./*.deb )
|
|
shopt -u nullglob
|
|
echo "更新包管理器..."
|
|
if [ -x "$(command -v oma)" ]; then
|
|
sudo oma refresh
|
|
elif [ -x "$(command -v apt)" ]; then
|
|
sudo apt-get update
|
|
elif [ -x "$(command -v yum)" ]; then
|
|
sudo yum update
|
|
fi
|
|
echo "包管理器更新完毕"
|
|
|
|
|
|
# 检查是否存在.deb文件
|
|
if [[ ${#deb_packages[@]} -eq 0 ]]; then
|
|
echo "错误:当前目录下未找到任何.deb文件。"
|
|
exit 1
|
|
fi
|
|
echo "开始安装以下.deb包:"
|
|
printf ' - %s\n' "${deb_packages[@]##*/}" # 仅显示文件名,去除路径
|
|
|
|
# 使用apt安装所有包(自动处理依赖)
|
|
apt install --yes ./**.deb
|
|
|
|
|