文字列がイメージであるかどうかを確認する方法

文字列がイメージであるかどうかを確認する方法

.desktopファイルからアイコンパスを抽出しています。

時には、ファイルにファイルの絶対パスが含まれていることがあります。

Icon=/snap/spotify/41/usr/share/spotify/icons/spotify-linux-128.png

それ以外の場合はファイル名のみがあり、拡張子はありません。

Icon=spotify-linux-128

私は現在/usr/share/icons/hicolorフォルダからアイコン名を検索しています。しかし、アイコンパスが絶対パスでファイルを指している場合、findが間違った場所を探しているため、結果は出ません。

私のbashスクリプトに文字列が画像であるかどうかを知る方法はありますか?

私は確認しようとしています:

file $iconpath 

しかし、パスが存在しない場合、明らかに何かが間違っているでしょう。

もっと良い方法がありますか?

あなたは何をしますか?

ベストアンサー1

@muruが指摘したように。

これ確かに解決策は、文字列が/で始まることを確認することです。

つまり

if [[ $icon == /* ]] 
then
    echo "is a file path"
else
    echo "is not a file path"
fi

編集する:

ファイルが存在することを確認するためにこれを行うこともできます。

if [ -a $icon ];
then
    echo "File exists"
else
    echo "File does not exist"
fi

おすすめ記事