説明する

説明する

たとえば、次のようになります。

最初

cd /usr/lib

そして走る

for x in $(ls);do if [ "$x" == "*.a" ];then echo $x;fi;done

私がやりたいことは、拡張子が.aのファイルを選択して印刷することです。これを行うより簡単な方法があることを知っていますが、これは私の意図ではありません。

問題は、上記のコマンドが機能しないことです。理由はわかりません。私はこれを学んだこの投稿

私も試しました

[ "$x" == *.a ]    bash: [: too many arguments
[ $x = "*.a" ]    shows nothing
[ $x = *.a ]    bash: [: too many arguments

うまくいくことはわかりますが、この状況でテストを書く正しい方法が何であるかを[[ $x == *.a ]]知りたいです。[

ベストアンサー1

for x in ./*; do
   case $x in
      *".a" ) echo "$x";;
   esac
done

構造[はこれに完全には適していません。しかし、あなたが主張するならば、私たちはこれを行うことができます:

[ '.a'  =  ".${x##*.}" ]

説明する

$ xに次のものが含まれていると仮定すると、my.file.testing.a${x##*.}から始めてから.見える最後の項目までできるだけ削除します$x。 IOW、私たちはついにすべてを下ろし、extension視覚化をa前面に掲げました。今、私たちは.a成功にもっと良いと思うもの( )と比較するために計算したばかりの拡張を持っています。

おすすめ記事