ダッシュ:文字列を2つの変数に解析します。

ダッシュ:文字列を2つの変数に解析します。

解析する必要があるダッシュスクリプトがあります。これは、「」で区切られた2つの部分を含む文字列$1です。たとえば、$Xと$Yに保存したいと思います。:foo:123foo123

私は次のことができると思いますread

$ echo "foo:123" | tr ':' ' ' | read X Y

ただし、これは機能しません(エラーは発生しません)。

$ echo $X

空行を出力として提供します。

私のread設定がうまくいかないのはなぜですか?目標を達成するにはどうすればよいですか?(すべてのソリューション、読み取りを使用する必要はありません)

ベストアンサー1

存在するスプリント、各コマンド管路 サブシェルで実行zshそしてAT&T kshパイプラインの一番右のコマンドは)、したがってコマンドが完了すると、変数XYもはや存在しません。

簡単に言えば、使えますパラメータ拡張、努力する:

$ set -- foo:123
$ X=${1%:*}
$ Y=${1#*:}

この例は対話型セッションに関するものです。

スクリプトには必要ありませんset -- foo:123

おすすめ記事