GNU/Linux >> Linux の 問題 >  >> Linux

ファイルの行をコマンドの引数として使用するにはどうすればよいですか?

command `< file`

ファイルの内容を標準入力のコマンドに渡しますが、改行を削除します。つまり、各行を個別に反復処理できませんでした。そのために、「for」ループを含むスクリプトを作成できます:

for line in `cat input_file`; do some_command "$line"; done

または (複数行バリアント):

for line in `cat input_file`
do
    some_command "$line"
done

または ($() の複数行バリアント `` の代わりに ):

for line in $(cat input_file)
do
    some_command "$line"
done

参考文献:

<オール>
  • ループ構文の場合:https://www.cyberciti.biz/faq/bash-for-loop/

  • すでに述べたように、バッククォートまたは $(cat filename) を使用できます .

    言及されていないこと、および注意することが重要だと思うのは、シェルがそのファイルの内容を空白に従って分割し、見つかった各「単語」をコマンドに引数として与えることを覚えておく必要があるということです。また、空白やエスケープ シーケンスなどを含めることができるようにコマンド ライン引数を引用符で囲むことはできますが、ファイルからの読み取りでは同じことはできません。たとえば、ファイルに以下が含まれているとします:

    a "b c" d
    

    取得する引数は次のとおりです:

    a
    "b
    c"
    d
    

    各行を引数としてプルしたい場合は、while/read/do コンストラクトを使用してください:

    while read i ; do command_name $i ; done < filename
    

    バッククォートを使用してそれを行います:

    echo World > file.txt
    echo Hello `cat file.txt`
    

    シェルが (特に) bash の場合、$(cat afile) のショートカット $(< afile) です 、したがって、次のように記述します:

    mycommand "$(< file.txt)"
    

    「コマンド置換」セクションの bash man ページに記載されています。

    または、コマンドを stdin から読み取るようにします:mycommand < file.txt


    Linux
    1. Linuxgrepコマンドの使用方法

    2. Linuxでhistoryコマンドを使用する方法

    3. LinuxでTarコマンドを使用する方法

    1. Linuxの履歴コマンドの使用方法

    2. basenameコマンドの使用方法は?

    3. sed を使用してファイルの最後の n 行を削除する方法

    1. 例でchgrpコマンドを使用する方法

    2. Bash読み取りコマンドの使用方法

    3. Linuxでmd5sumコマンドを使用する方法