ファイル名から特定の文字列を検索し、シェルスクリプトの変数に保存します。

ファイル名から特定の文字列を検索し、シェルスクリプトの変数に保存します。

非常に具体的な命名スキームを持つファイルがあるとしましょう。たとえば、という名前のファイルがあり、x=1,y=15,z=63.txtこのファイル名を変数に保存しましたfile。変数から文字列を検索"x="し、その後の数字を変数に保存したいと思いますxyそして江戸同様ですz

x="search x=*, $file"
y="search y=*, $file"
z="search z=*.txt $file"

シェルスクリプトに初めて触れる人として、これは明らかに偽のコマンドであり、コンパイルされませんが、これが私の目標の概要を説明してくれることを願っています。私がやりたいことに対する解決策はありますか?

ベストアンサー1

注:答えはbashシェルに適用され、ファイル名にスペースなどの特殊文字が含まれていないとします。

変数にファイル名が含まれていると仮定すると、$fileまずファイルのサフィックスを削除する必要があります。

$ file=${file%.*}
$ echo $file
x=1,y=15,z=63

$fileはそれがすべてですx=1,y=15,z=63

declareこれで組み込みの機能を使用できますbash

declare ${file//,/ }

${file//,/ }すべてのカンマ文字を空白に置き換えるため、bashはこれを次のように拡張します。

declare x=1 y=15 z=63

結果:

$ declare ${file//,/ }
$ echo $x $y $z
1 15 63

おすすめ記事