关于这个问题也有类似的问题。但不是同一个解决方案。
我要创建一个带有两个参数的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
每当我测试它时,它会产生“fileName:no such file”而不会产生任何其他内容。
测试由
执行./chExt2.sh cpp aardvark.CPP
其中aardvark.CPP不在目录中。
非常感谢任何帮助或指导。谢谢
答案 0 :(得分: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
正在使用与您预期不同的shell。例如,此脚本在ksh
或bash
中正常运行,但如果/bin/sh
为tcsh
,则会生成“额外输出”:
fileExtension=cpp: Command not found.
Illegal variable name.