現在、このスクリプトは$ 1 $ 2用に設定されていますが、これは2つの入力を受け取り、1つは拡張子、1つはファイル名、相対パスが見つかると、そのファイルを新しい拡張子で置き換えます(同じ拡張子がない場合は何も行いません)。見つからなければ、エラーメッセージを出力します。私は必要なもの以前の入力で以前のプロセスを可能な入力数に適用するスクリプトを変更する
#!/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"を特に使用する必要があります。
プログラミングは有害とみなされます! http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/を参照してください。もう1つのシェルを試してみてください。それは、 'python'や' perl'のようなスクリプト言語です。 – Gowtham
最後の要件(「foreach」と「shift」を使用)は、これが宿題であることを意味します。スクリプト作成にcshを推奨する講座を受講する場合は、受講する指導の質を真剣に検討する必要があります。 cshはこのタイプのタスクには適していません。 –