0

私は現在、このスクリプトを $1 $2 に設定しています。これは、拡張子とファイル名の 2 つの入力を取り、相対パスでファイル名を検索し、見つかった場合はファイルを新しい拡張子に置き換えます (または、同じ拡張子)、見つからない場合は、エラー メッセージを出力します。

#!/bin/csh                                                                      
set ext="$1"
set oldName="$2"
if (-r "$oldName") then
set newName=`echo "$oldName" | sed 's/\.[A-Za-z0-9]*$/'".$ext"'/g'`
if ( "$oldName" == "$newName" ) then
:
else
mv "$oldName" "$newName"
endif
else
echo "$oldName": No such file
endif

必要なのは、このスクリプトを変更して、$1 が常に拡張子になるようにすることですが、$2 は任意の数の可能な入力にできるようにすることです。次に例を示します。

./chExt.sh 'bat' 'bool.com' 'nofilefound.biz' 'james.bro'

そして本質的に作るだろう

bool.bat
nofilefound.biz: No such file
james.bat

そのため、常に $1 を拡張子として読み取り、元のスクリプトと同じプロセスを適用する必要があると常に $2-$n を認識します。

特に「foreach」と「shifts」を使用する必要があります。

4

1 に答える 1