我正在尝试执行该程序,如下所示。
./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"
答案 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
全局搜索和替换(所有出现次数)。