shell脚本编写时命令未找到错误

时间:2013-05-02 13:11:17

标签: linux unix scripting

我正在尝试执行该程序,如下所示。

./chExt1.sh cpp test.CPP  

这应该将 test.CPP 重命名为 test.cpp ,但我甚至不认为这个脚本正在执行。
我一直得到这个“command not found error” 脚本如下:

#!/bin/sh
newExtension=$1;
oldFile=$2;

        firstPart=`echo $oldFile | sed  's/\(.*\)\..*/\1/'`
    newName="$firstPart.$newExtension";

#echo $oldFile
#echo $newName
mv "$oldFile" "$newName"
#echo "$oldFile"
#echo "$firstPart"
#echo "$newName"

2 个答案:

答案 0 :(得分:2)

我终于解决了这个问题。当我将包含脚本的文本文件FTP然后在linux中的.sh中传输它时,出现了可怕的错误。我在emacs中从头开始编写并清除了所有内容。

答案 1 :(得分:1)

根据您的评论,在vi中执行此操作以删除额外的控制字符。我在编辑gedit中的文件或在Windows中编辑然后在Unix / Linux机器上使用时遇到过这个问题。

要移除^M中所有行末尾的vi个字符,请使用:

:%s/^V^M//g

^v Ctrl V 字符,^m Ctrl M 。当您输入此内容时,它将如下所示:

:%s/^M//g

在UNIX中,您可以通过在 Ctrl V 之前对其进行转义来转义控制字符。 :%s是vi中的基本搜索和替换命令。它告诉vi用第二个和第三个斜杠之间的文本替换第一个和第二个斜杠(^M)之间的正则表达式(在这种情况下没有任何内容)。最后的g指示vi全局搜索和替换(所有出现次数)。

Source