1

私のプログラムは、最初のパラメーターを拡張子として受け取り、残りのパラメーターを検索するファイルとして受け取り、見つかった場合は拡張子によって変更するように設計されています。見つからない場合は、エラーを出力します。

./chExt.sh'com''kingcobra.dat'まですべてが素晴らしい

ここで、$fileは2つの単語を「king」と「cobra.dat」に分割してから別々に実行します。'kingcobra.dat'全体を$fileに読み込むために必要です。

「shift」を使って全体を読ませることについて何か聞いたことがありますが、どのように実装すればよいかわかりません。

#!/bin/csh                                                                   \

set ext="$1"
shift

echo the remaining are $*
foreach file ($*)
echo $file
if (-r "$file") then
set newName=`echo "$file" | sed 's/\.[A-Za-z0-9]*$/'".$ext"'/g'`
echo $newName
if ( "$file" == "$newName" ) then
:
else
mv "$file" "$newName"
endif
end
else
echo "$file": No such file
end
endif

ありがとう!

4

1 に答える 1

1

Csh には独自の変数修飾子がいくつかあります。 grymoire csh var :q (引用符) 修飾子を参照してください。

あなたの場合、あなたはすることができます

foreach file ($*:q)
echo $file:q
if (-r $file:q) then
set newName=`echo $file:q | sed 's/\.[A-Za-z0-9]*$/'".$ext"'/g'`
echo $newName:q
 .....

残念ながら、これをテストするための csh がありません。dbl で引用された変数の一部を元に戻す必要があるか、少なくとも実行可能であることに気付くかもしれません。

これが役立つことを願っています。

于 2012-04-21T02:32:58.717 に答える