0

因此,脚本应该接受一个文件扩展名,可能还有多个文件来更改它们的扩展名。它适用于大多数情况,但是当文件中有空格时,它会更改它,然后说该文件不存在。这是我所拥有的...

#!/bin/sh
fileExtension="$1"
shift
oldName="$@"
extension=${oldName##*.}
totalFiles=$#
totalFiles=$(( totalFiles+1 ))

num=1
while [ $num -lt $totalFiles ]
do
   for i in "$oldName"
   do
      extension=${i##*.}
      if test -e "$i" then
          newName="${i%.*}.$fileExtension"
          if [ "$i" = "$newName" ]
          then
             :
          else
              mv "$i" "$newName"
          fi
      else
          echo "$i": No such file
      fi
      num=$(( num+1 ))
      shift
      done
done
4

3 回答 3

0

你不能迭代一个字符串,至少不是你现在的样子。oldName需要是一个数组

# other stuff
oldName=("$@")
# other stuff
for i in "${oldName[@]}"
# other stuff
于 2013-05-21T01:20:54.297 回答
0

为什么不简化它:

#!/bin/sh
fileExtension="$1"
shift
for file in "$@"
do
    extension=${file##*.}
    if [ -e "$file" ]
    then
        newName="${file%.*}.$fileExtension"
        if [ "$file" != "$newName" ]
        then mv "$file" "$newName"
        fi
    else
        echo "$file: No such file" >&2
    fi
done
于 2013-05-21T03:06:17.190 回答
0

我用这个...

#!/bin/sh
fileExtension="$1"
shift
for file in "$@"
do
    if test -e "$file"
    then
    newName="${file%.*}.$fileExtension"
        if test "$file" = "$newName"
        then
        :
        else
            mv "$file" "${file%.*}.$fileExtension"
    fi
    else
        echo "$file": No such file >&2
    fi
done
于 2013-05-21T22:43:28.477 回答