您将不得不原谅我,我几乎没有编写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
答案 0 :(得分:1)
您正在使用哪个版本的ksh?
"${file//old/new}"
和"${file/old/new}"
是Doku built-in functions for int, map, sum中的有效语法。
如果您的环境是ksh93 "${file//old/new}"
,则不支持替换。
您必须使用sed / tr替换模式。这是sed的示例。
mv -v -- "$file" "$(echo ${file}|sed 's/old/new/')"
答案 1 :(得分:0)
违规行:
mv -v -- "$file" "${file/old/new}";
应为:
mv -v -- "$file" "${file//old/new}";
如果要将$old
替换为$new
(而不是将文字字符串"old"
替换为"new"
),请输入:
mv -v -- "$file" "${file//$old/$new}";