インラインテキストを取得する方法

インラインテキストを取得する方法

人々が単一の端末で使用できるようにオンラインチュートリアルを作成するときは、コードをインラインで取得するのが最善ですが...どちらも期待どおりに機能しませんでした。私はfooこれらすべてのための「バー」になりたい。理由を知っている人はいますか?

#!/usr/bin/env bash

source <(echo "export foo=bar");
echo "$foo"

source <(cat <<< "export foo=bar");
echo "$foo"

source <(cat <<EOF
  export foo=bar

EOF
);


echo "$foo"

私の唯一の推測は、sourceファイル記述子から読み取ることができないことです。私も同じことを.代わりに使ってみました。source

私はMacOSを使用しており、bash --version結果は次のとおりです。

GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin18) 
Copyright (C) 2007 Free Software Foundation, Inc.

ベストアンサー1

これはバージョン4.0より前のバージョンでは機能しませんbash(たとえば、bashmacOSのデフォルトバージョンはバージョン3.2.57(1)です)。

バージョン4.0にはバグフィックスがあります:

"."が非標準ファイル(デバイスや名前付きパイプなど)からコマンドを読み込んで実行できないバグを修正しました。

(その言葉はhttps://tiswww.case.edu/php/chet/bash/CHANGES)

sourceプロセスの置き換えでこれを使用すると、(または)読み取ったファイルが.通常のファイルではないため、バージョン4.0で修正されたバグが発生します。

現在の最新バージョンは5.0.7(1)で、コードは期待どおりに動作します。

おすすめ記事