パイプ - 文字列の途中にパイプを挿入します。

パイプ - 文字列の途中にパイプを挿入します。

パイプ挿入文字の作成方法真ん中文字列?以下は私の例です(Raspianを実行)。

hostname -I | sudo python ~/testsite/manage.py runserver {the ip from the first command}:80

可能ですか?また、固定IPを使用したくありません。

ベストアンサー1

私の考えでは、あなたが要求したことをしたくないと思います。 1つのコマンドの出力を別のコマンドの引数として使用したい場合は、$(...)orのような設定が`...`友達です。たとえば、

sudo python ~/testsite/manage.py runserver $(hostname -I):80

これはあなたが要求したものではありませんが、あなたが望むように行われます。

実際にstdin(パイプ)をパラメータとして使用するには、次のものを使用できます。xargs(1)whileまたは、シェルで高速ループを実行します。

これにより、stdinが行の末尾に配置されます。

echo Hello | xargs echo "The word is:"

または、1行内の内容を置き換えるには:

echo Hello | xargs -J % echo % is the word.

しかし、xargsの使い方を理解していない場合、xargsを使用するのは難しいかもしれません。 xargs コマンドはオペレーティングシステムによって異なります。この-JオプションはBSDとOSXでは動作しますが、以前のLinuxディストリビューションでは動作しません。どのオペレーティングシステムを使用しているかわかりません。

ループが簡単になります。

echo Hello | while read word; do echo "$word is the word."; done

またはあなたの場合:

hostname -I | while read ip; do
    sudo python ~/testsite/manage.py runserver ${ip}:80
done

ループは一度だけ実行されますが、コマンドラインを簡単に組み合わせることができます。 YMMV。

おすすめ記事