指定された拡張子とワイルドカードを含めることができるユーザー入力パターンを比較する必要があります。たとえば、入力がある場合は、指定された入力ディレクトリのhy*.gif
ファイルとファイルをhyland.gif
出力ディレクトリに移動します。hyland2.gif
これはケースごとに行われ、各拡張子、、、.gif
および.tiff
は.png
個別に処理されます。
私が試したことは次のとおりです。
if("$pattern" =~ *.gif) then
#move all .gif files to output directory
if文の本文は重要ではありません。の場合はtrueを返す式を取得できませんが、hy*.gif
次の場合はtrueを返します。*leaves\*.tiff
同様に、入力ディレクトリ内のすべてのファイルを確認するためにこの式がtrueを返すことはできません。
if($file =~ *"$pattern")
私が理解したところによると、=~
オペレータは右側にワイルドカードだけを期待しているので、これが問題を引き起こしているようです。
=~
grepなどの単純なコマンドを使用してこのチェックを実行する他の方法はありますか?それとも、*
演算子自体を一致させる方法はありますか?
ベストアンサー1
動作する必要があります。 echo "$pattern" コマンドを実行して $pattern 値を表示する必要があります。ただし、ifステートメントコンポーネントを分離する必要があります。
if ( "$pattern" =~ *.gif ) then
echo "pattern matches..."
else
echo "no match"
endif
シナリオでは、「switch」ステートメントを最大限に活用することもできます。
switch ( "$pattern" )
case "*.gif":
echo "GIF ok"
breaksw
case "*.png":
echo "PNG ok"
breaksw
default:
echo "No match"
breaksw
endsw