0

このサンプルファイルを入力として使用しようとしています:

./chExt1.sh 'ab' 'mouse.ext'

この現在のスクリプトを使用して、「mouse.a b」を出力として取得します。私が遭遇しているエラーは次のとおりです。

~/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 に答える