2016-04-12 15 views
2

引数をパイプで参照するには?例えばbashは引数/変数をパイプで参照します

、あなたが./test.sh abcd.txtを実行するときに

#!/bin/bash 
echo $1 

以下のようなコードtest.shを持っている場合、あなたはabcd.txt画面上に印刷されます。

しかし、私がls *.txt | ./test.shを試してみると、空の行がすべてエコーされてしまいました。

+2

STDIN!=コマンドライン引数。 – Biffen

答えて

3

あなたはxargsを使用して試みることができる:

find . -type f -name \*.txt -printf "%p\0" | xargs -0 -I xxx ./test.sh xxx 
+0

@EtanReisnerありがとうございます!私は覚えていないと困ってしまったことを覚えています...私は一度気づきます - 私はそれについての情報を見つけませんでした。私はこれをさらにテストする予定でした。 –

+0

@EtanReisner答えがテスト後に編集され、 '-I xxx'が保存されていました。それ以外の場合は失敗しています。 –

1

データはSTDINですが、それらは、コマンドライン引数をされない「のパイプ」。ここではSTDINの各ラインを印刷する例を示します

#!/usr/bin/env bash 
while read line; do 
    echo "Line: $line" 
done 

バッシュreadコマンドへ多くのオプションがあります。詳細は、マニュアルページのSHELL BUILTIN COMMANDSセクションを参照してください。

関連する問題