
パイプ挿入文字の作成方法真ん中文字列?以下は私の例です(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。
答え2
ダッシュを使用して、前のコマンド「hostname -I」の標準出力を表すことができると思います。
hostname -I | sudo python ~/testsite/manage.py runserver -
IPv6をブロックするには:
hostname -I | some command to cut ipv6 |sudo python ~/testsite/manage.py runserver -