0

我正在尝试将此示例文件作为输入:

./chExt1.sh 'a b' 'mouse.ext'

并使用当前脚本获取“mouse.ab”作为输出。我遇到的错误是:

~/UnixCourse/scriptAsst> ./chExt1.sh 'a b' 'mouse.dat'
sed: -e expression #1, char 31: unterminated `s' command
a b

mouse.dat
mv: cannot stat `mouse.dat': No such file or directory

我当前的脚本是:

#!/bin/csh                                                                      
set ext="$1"
set oldName="$2"
set newName=`echo "$oldName" | sed 's/\.[A-Za-z0-9][A-Za-z0-9]*$/'.$ext'/g'`
#set newName=`echo "$oldName" | sed 's/\.[A-Za-z0-9][A-Za-z0-9]*$/'.$ext'/g'`   
echo "$ext"
echo "$newName"
echo "$oldName"
mv "$oldName" "$newName"

我缺少什么会使文件回显带有空格的扩展名?

谢谢

4

2 回答 2

1

你需要使用正则表达式吗?如果您只使用:

echo ${2%.*}.$1

你得到相同的结果:

$sh script 'a b' 'test.dat'
test.a b
于 2012-04-19T01:13:24.323 回答
0

.$ext包含空间,所以它应该被封闭在"..."

set newName=`echo "$oldName" | sed 's/\.[A-Za-z0-9][A-Za-z0-9]*$/'".$ext"'/g'`
于 2012-04-19T01:17:30.500 回答