4

我正在尝试按如下方式执行程序。

./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"
4

2 回答 2

2

我终于解决了这个问题。当我对包含脚本的文本文件进行 FTP 传输,然后将其传输到 linux 中的 .sh 中时,出现了可怕的错误。我在 emacs 中从头开始写,这清除了一切。

于 2013-05-02T14:02:17.877 回答
1

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

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

:%s/^V^M//g

^v一个CtrlV字符并且^m是一个CtrlM. 当您键入此内容时,它将如下所示:

:%s/^M//g

在 UNIX 中,您可以通过在控制字符前面加上CtrlV. 这:%s是 vi 中的基本搜索和替换命令。它告诉vi将第一个和第二个斜杠 ( ) 之间的正则表达式替换为^M第二个和第三个斜杠之间的文本(在这种情况下没有)。最后g的 指示vi全局搜索和替换(所有出现)。

资源

于 2013-05-02T13:37:40.903 回答