【发布时间】:2019-03-23 11:16:15
【问题描述】:
请原谅我,我几乎没有编写 Linux 脚本的经验。好的,我要做的是重命名具有指定名称的文件的一部分,但我遇到的问题是我在 For 循环期间收到错误是这个 0403-011 指定的替换是对此命令无效我不确定我在 for 循环中做错了什么,有人可以帮忙吗?
#Creates Directory
echo "Name of New Directory"
read newdir
if [[ -n "$newdir" ]]
then
mkdir $newdir
fi
echo $userInput Directory Created
echo
echo "Directory you wish to Copy?"
read copydir
if [[ -n "$copydir" ]]
then
#Copies contents of Specified Directory
cp -R $copydir/!(*.UNC) $newdir;
#Searches through directory
for file in $newdir/$copydir*; do
mv -v -- "$file" "${file/old/new}";
done
fi
【问题讨论】:
-
我无法重现此内容。我做了
mkdir -p newdir copydir; touch copydir/{a.txt,b.txt,c.UNC,e.UNC}; newdir=newdir; copydir=copydir,但你如何期望for file in $newdir/$copydir*工作?目录$newdir/$copydir应该从哪里来/应该在$newdir/$copydir路径中命名哪些文件?您是否打算使用完整路径进行复制?你能创建一个可重现的例子吗?前任。包括目录和文件的创建或发布你给程序的输入以及在运行脚本之前 newdir 和 copydir 的内容是什么?? -
同意上面的 cmets,并且
0403-011 ...err msg形式的错误消息看起来像是来自 AIX OS。是这样吗?如果是这样,请编辑您的 Q 以显示来自echo $SHELL(可能还有echo $BASH_VERSION)的结果。您在顶部#!/bin/sh(?) 列出的 shell 可能不支持 ${var/old/new} 语法。并且最好更新您的 Q 并添加诸如“查看 Q 中的更新”之类的评论,而不是创建一长串难以阅读的 cmets/代码。祝你好运。