Bashスクリプトのパイプを含むコマンドライン全体にアクセスできますか?

Bashスクリプトのパイプを含むコマンドライン全体にアクセスできますか?

たとえば、コマンドラインは次のようになります。

test.sh arg1 | grep "xyz"

bashスクリプトtest.shから次のgrepを含む完全なコマンドラインを取得できますか?

ベストアンサー1

いいえ

bash(またはシェル)は2つの異なるコマンドを分岐します。

  1. test.sh arg1
  2. grep "xyz"

test.shgrepに従う方法がわかりません。

ただし、テストではパイプライン「内部」にあることがわかります。/proc/self/fd/1

テストファイル

#!/bin/bash

file /proc/self/fd/1

動作モードは次のとおりです。

> ./test.sh
/proc/self/fd/1: symbolic link to /dev/pts/0
> ./test.sh | cat
/proc/self/fd/1: broken symbolic link to pipe:[25544239]

(編集者)参照Muluのコメントあなたがパイプラインにいるかどうかを知っていることについて。

あなたがそのような問題に直面しているかどうかを知る必要はありません。出力がTTYであることを確認してください。[ -t 1 ] https://unix.stackexchange.com/a/401938/70524

おすすめ記事