You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Shell脚本跨月执行目录报错求助,及上级目录切换方法

我来帮你搞定这两个Shell脚本的问题:

1. 切换至上一级目录的方法

在Shell脚本里切换到当前工作目录的上一级,最直接的命令就是:

cd ..

如果想更严谨一点,避免后续操作因为目录切换失败而出错,可以加上失败判断:

cd .. || { echo "切换至上一级目录失败,请检查权限或目录存在性"; exit 1; }

这样一旦切换失败,脚本会立刻报错退出,不会继续执行后续可能出问题的代码。

2. 固定操作目录,解决跨月访问报错问题

你遇到的跨月报错,本质是用了相对路径(比如../2018/02)动态拼接月份,但下个月的目录还没创建。现在要指定到固定的/home/application/Files/output/2018/01/30目录,直接用绝对路径就能彻底解决这个问题,步骤如下:

方法一:直接切换到固定目录

在脚本里添加以下代码,直接定位到目标目录:

# 定义目标目录(用变量方便后续修改)
TARGET_DIR="/home/application/Files/output/2018/01/30"

# 切换到目标目录,失败则报错退出
cd "$TARGET_DIR" || { echo "无法切换到目标目录:$TARGET_DIR,请检查路径或权限"; exit 1; }

方法二:先确保目录存在再切换(可选)

如果担心这个固定目录可能不存在,可以先检查并创建(递归创建所有父目录):

TARGET_DIR="/home/application/Files/output/2018/01/30"

# 检查目录是否存在,不存在则递归创建
if [ ! -d "$TARGET_DIR" ]; then
    mkdir -p "$TARGET_DIR" || { echo "创建目录失败:$TARGET_DIR"; exit 1; }
fi

# 切换到目标目录
cd "$TARGET_DIR" || { echo "切换目录失败:$TARGET_DIR"; exit 1; }

用绝对路径后,不管脚本在哪里执行、当前是什么月份,都会精准定位到你指定的目录,再也不会出现访问未创建目录的问题了。

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

火山引擎 最新活动