0

关于这个问题有一个类似的问题。但不是相同的解决方案。

我将创建一个带有两个参数的 shell 脚本: 1. 所需的文件扩展名 2. 要使用该扩展名重命名的单个文件的名称

该脚本应使用所需的文件扩展名重命名文件。如果文件不存在,它应该打印出“fileName: No such file”。它正在产生此消息,但教授的测试表明它正在产生意外消息(额外消息),但事实并非如此。我的shell脚本是:

#!/bin/sh
fileExtension="$1"
shift
oldName="${@}"
extension=${oldName##*.}
if test -r "$oldName"
then
   if "$fileExtension" == $oldName.*
   then
      echo "$oldName"
   else
      newName="${oldName%.*}.$fileExtension"
      mv "$oldName" "$newName"
   fi
else 
   echo "$oldName": No such file
fi

每次我测试它时,它都会产生“文件名:没有这样的文件”,没有别的。

测试由

./chExt2.sh cpp aardvark.CPP

其中 aardvark.CPP 不在目录中。

任何帮助或指导将不胜感激。谢谢

4

1 回答 1

0

你的 shebang 告诉你的 shell 用来/bin/sh运行脚本。 /bin/sh通常是主机上真实/默认 shell 的符号链接。例如,我的 bash:

$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Mar 27  2009 /bin/sh -> bash

听起来您教授的计算机/bin/sh使用的外壳与您 [预期] 不同。例如,此脚本在kshor中运行良好,但如果为,则bash产生“额外输出” :/bin/shtcsh

fileExtension=cpp: Command not found.
Illegal variable name.
于 2013-05-15T14:14:54.983 回答