2012-04-19 16 views
0

にスペースを持つエコー拡張機能を追加するためのsedの式:私は、入力として、この例のファイルを取るしようとしているシェルスクリプト/ /名前

./chExt1.sh「AB」「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" 

私はそれがスペースで拡張子をエコーするファイルを取得します何をしないのですか?

ありがとう

答えて

1

正規表現を使用する必要がありますか?あなただけを使用する場合:

echo ${2%.*}.$1 

あなたが同じ結果を得る:

$sh script 'a b' 'test.dat' 
test.a b 
+0

で囲む必要がありますので、私はやる、スペースが含まれている、私は唯一の修正を行うことができます現在のsedスクリプトには、さまざまな問題に遭遇したときにゆっくりと修正する必要がありました。 –

0

.$extを、それが"..."

set newName=`echo "$oldName" | sed 's/\.[A-Za-z0-9][A-Za-z0-9]*$/'".$ext"'/g'` 
関連する問題