You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 16.04脚本中rm通配符或wget变量展开故障排查

解决Ubuntu 16.04下phpMyAdmin自动化脚本的部分执行问题

我来帮你排查并修复这个脚本的部分执行问题——这几个都是自动化脚本里很常见的路径、权限和逻辑问题,咱们逐个拆解解决:

问题根源分析

先梳理每个异常点的常见原因:

  • rm命令的潜在问题:要么是用了相对路径(脚本执行时工作目录变化导致路径失效),要么没加-f参数触发交互式确认,卡住了后续执行;也可能目标目录不存在直接报错中断脚本。
  • wget下载到主目录:核心原因是没明确指定下载目录,或者指定的目录不存在,wget默认就会下载到当前工作目录(也就是你的主目录,因为脚本在~/myScripts/,执行时默认工作目录是~)。
  • mv命令未完成:大概率是你脚本里写死了解压后的目录名,但phpMyAdmin最新压缩包解压后目录带版本号(比如phpMyAdmin-5.2.1-all-languages),导致mv找不到源目录;也可能是目标路径权限不足,或者目标目录没提前清理。

针对性修复方案

1. 让rm命令稳定执行

用绝对路径+强制删除参数,再加上存在性判断,避免报错中断:

# 定义目标目录的绝对路径
PMA_OLD_DIR="/var/www/html/phpmyadmin"
if [ -d "$PMA_OLD_DIR" ]; then
    # sudo用来确保有权限删除web目录下的文件
    sudo rm -rf "$PMA_OLD_DIR"
fi

加-rf是为了递归删除目录且不弹出确认提示,避免脚本卡在交互环节。

2. 让wget下载到指定目录

必须用-P参数指定下载目录,且提前用mkdir -p创建目录(-p会自动创建多级目录,且目录已存在时不报错):

DOWNLOAD_DIR="/tmp/pma_temp"
# 先创建下载目录
mkdir -p "$DOWNLOAD_DIR"
# 用-P指定下载到这个目录
wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.zip -P "$DOWNLOAD_DIR"

3. 修复mv找不到源目录的问题

phpMyAdmin的解压目录带版本号,不能写死名称,用通配符匹配获取实际目录名:

# 解压到临时目录
unzip "$DOWNLOAD_DIR/phpMyAdmin-latest-all-languages.zip" -d "$DOWNLOAD_DIR"
# 用通配符匹配解压后的目录
PMA_UNZIPPED=$(ls -d "$DOWNLOAD_DIR/phpMyAdmin-"*)
# 移动到目标路径,同样需要sudo确保权限
sudo mv "$PMA_UNZIPPED" "/var/www/html/phpmyadmin"

完整的修复后脚本

把上面的逻辑整合起来,给你一个可直接用的版本:

#!/bin/bash
# 脚本路径:~/myScripts/tp_pma.sh

# 定义所有绝对路径,避免工作目录变化导致错误
PMA_TARGET="/var/www/html/phpmyadmin"
TEMP_DIR="/tmp/pma_download"
PMA_ZIP_URL="https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.zip"
PMA_ZIP_FILE="$TEMP_DIR/phpMyAdmin-latest-all-languages.zip"

# 1. 清理旧的phpMyAdmin目录
echo "正在清理旧的phpMyAdmin目录..."
if [ -d "$PMA_TARGET" ]; then
    sudo rm -rf "$PMA_TARGET"
fi

# 2. 创建临时下载目录并下载压缩包
echo "创建临时下载目录..."
mkdir -p "$TEMP_DIR"

echo "开始下载最新版phpMyAdmin..."
wget "$PMA_ZIP_URL" -P "$TEMP_DIR"

# 3. 解压压缩包
echo "正在解压压缩包..."
unzip "$PMA_ZIP_FILE" -d "$TEMP_DIR"

# 4. 移动解压后的目录到目标路径
PMA_UNZIPPED_DIR=$(ls -d "$TEMP_DIR/phpMyAdmin-"*)
echo "移动文件到目标目录..."
sudo mv "$PMA_UNZIPPED_DIR" "$PMA_TARGET"

# 5. 清理临时文件
echo "清理临时文件..."
rm -rf "$TEMP_DIR"

echo "✅ phpMyAdmin更新完成!"

最后要做的几件事

  • 给脚本加执行权限:chmod +x ~/myScripts/tp_pma.sh
  • 执行脚本时用sudo确保权限:sudo ~/myScripts/tp_pma.sh
  • 如果wget下载失败,先手动访问那个URL确认是否能正常打开(偶尔phpMyAdmin的下载链接会更新)

内容的提问来源于stack exchange,提问作者Arcticooling

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 07:47:58