【发布时间】:2021-10-17 17:34:27
【问题描述】:
我需要编写一个脚本,我必须从文件abc_def_xxx_yyy_20210515.txt 中提取部分名称并检查abc_def_xxx_yyy.txt 是否存在。如果没有,则创建文件。
FILE="abc_def_xxx_yyy_20210515.txt"
DLS=echo $FILE | awk -F_ '{print $1,$2,$3,$4".txt"}'
DLL=\home\xxx\$DLS
if [-f "$DLL"]; then
echo "$DLL exists"
else
touch "$DLL"
fi
我收到错误消息"abc_def_xxx_yyy_20210515.txt" not found
但如果我只是运行
FILE="abc_def_xxx_yyy_20210515.txt"
echo $FILE | awk -F_ '{print $1,$2,$3,$4".txt"}'
我收到abc_def_xxx_yyy.txt。
有人可以帮我解决这个问题吗?
【问题讨论】:
-
你使用
bash还是ksh? -
这里有一堆语法错误;通过shellcheck.net 运行它并修复它指出的内容。此外,看起来您使用的是 DOS/Windows 路径(使用
/而不是 ``)——这是在 Windows 还是 Unix/Linux 上? -
在 UNIX 路径上
-
我正在使用 ksh
-
您忘记了命令替换周围的
$(...)。您将字符串echo分配给变量DLS,然后尝试将$FILE作为命令执行。
标签: bash shell unix scripting ksh