2017-02-16 3 views
0

私は、ファイルnext-version=2.0からこの行を読み込むスクリプトをbashで書いています。2.0を抽出します。私はそれを配列として解析し、=で分割することができますが、それは過度のもののように感じます。私がexport $VERSIONを実行して論理的にexport next-version=2.0になるようにすると、$next-versionと逆参照できます。代わりに、私はbash: export: `next-version=2.0': not a valid identifier部分的なbashコマンドとして文字列を評価する

だから、私はeval $VERSIONまたは$VERSIONを実行すると私は同じエラーを取得し、export next-version=2.0 GREATと評価されVERSION="export $VERSION"を試します。私は次のバージョン= 2.0は何とかそれが文字列であるという事実を維持していると思いますか?私は小文字から読むことがちょっと気になるかもしれないと思ったが、私は同じ結果でNEXT-VERSIONというプロセスを繰り返す。

+0

問題の文字列が有効な 'bash'代入文ではありませんので、やり過ぎではありません。あなたができることは、それを解析することだけです。 – chepner

答えて

1

bashのファンクションまたはコマンド名には、-を含めることができますが、パラメータ名は使用できません。これは、next-version=2.0bashで有効な割り当てでないことを意味します。これは、=より前の文字列が有効な名前である必要があるためです。あなたが行うことができる唯一のことは、配列の必要はありませんが、記述したとおりに解析することです。

IFS== read -r name value <<< "$str" 

または

value="${str#*=}" # Strip the prefix up to and including the first = 
0

それは$ export STRING-SS=asd bash: export: `STRING-SS=asd': not a valid identifier

NEXTVERSIONNEXT_VERSIONnext_versionまたはnextversionに変更next-versionをしようと-

です。

関連する問題