コマンド出力の変数名

コマンド出力の変数名

いくつかの文字列があり、コロン「:」に分割して、変数に左側の名前と右側の値を割り当てたいと思います。たとえば、

echo "Title: Some title" | sed 's/:.*//'

目的の変数名「Title」を入力し、次の操作を行います。

echo "Title: Some title" | sed 's/.*: //'

「一部ヘッダー」という値を教えてください。

私の質問は、上記のコマンドの出力を通じて「Title」という変数を割り当てる方法です。

値を割り当てることはできますが、$(echo "Title: Some title" | sed 's/.*: //)名前を割り当てる方法が見つかりません。

答え1

これはやや奇妙なことですが、次のようなexport文を構成することができるようです。

$ export $(echo "Title: Some title" | sed 's/:.*//')="$(echo "Title: Some title" | sed 's/.*: //')"
$ echo $Title
Some title

答え2

使用方法とbashのバージョンによっては、以下を使用する方が良いかもしれません。連想配列

失敗したらあなたに提案します

完全性を期すために実際にこれを行うことができますevalevalは危険ですので、必ず必要な場合以外は使用しないでください。

eval "${string/: /=\"}\""

答え3

おそらくこれは予想される結果を与えるでしょう。

#!/bin/sh
export Variablename="$(echo "Title: Some title" | awk -F':' '{ print $1}')=\"$(echo "Title: Some title" | awk -F':' '{ print $2 }' | sed -e 's/^[[:blank:]]*//g')\""

出力:

title="一部のタイトル"

関連情報