我目前将此脚本设置为 $1 $2,它接受两个输入,一个是扩展名,一个是文件名,并在相对路径中搜索文件名,如果找到,则用新扩展名替换文件(或者如果相同的扩展名),如果未找到,则打印错误消息。
#!/bin/csh
set ext="$1"
set oldName="$2"
if (-r "$oldName") then
set newName=`echo "$oldName" | sed 's/\.[A-Za-z0-9]*$/'".$ext"'/g'`
if ( "$oldName" == "$newName" ) then
:
else
mv "$oldName" "$newName"
endif
else
echo "$oldName": No such file
endif
我需要修改此脚本,以便 $1 始终是扩展名,但 $2 可以是任意数量的可能输入,例如:
./chExt.sh 'bat' 'bool.com' 'nofilefound.biz' 'james.bro'
并且基本上会使
bool.bat
nofilefound.biz: No such file
james.bat
所以它总是将 $1 读取为扩展名,并且总是将 $2-$n 视为需要与原始脚本应用相同的进程。
我必须专门使用“foreach”和“shifts”。