Shell脚本不会生成“额外”错误消息,但是针对一个奇怪的测试用例

时间:2012-04-20 05:52:15

标签: shell unix sed

我必须编写一个基本脚本,它以以下形式输入:

./ chext'param1''param2.xx'

和输出:

param2.param1

具体来说,我必须检查文件是否存在,如果存在,则使用新扩展名重命名,如果不存在,则生成消息:

param2.xx:没有这样的文件

具体来说,我被告知:“不应发出其他消息,包括脚本调用的命令中的错误消息。”

这适用于以下示例:

./ chext'com''aardvark.dat'

./ chext'ret''too common.exp'

但是:

./ chext'dat''ocelot.dat'

我收到错误(由我的教授创建)“生成意外消息”

有人能告诉我这个例子有什么不同,我的剧本没有照顾?

#!/bin/csh                                                                      
set ext="$1"
set oldName="$2"
if (-r "$oldName") then
set newName=`echo "$oldName" | sed 's/\.[A-Za-z0-9]*$/'".$ext"'/g'`
mv "$oldName" "$newName"
else
echo "$oldName": No such file
endif

由于

1 个答案:

答案 0 :(得分:0)

您无法将文件重命名为已有的名称。