あるコマンドの出力をコマンドライン引数として別のコマンドに渡すにはどうすればよいですか?

あるコマンドの出力をコマンドライン引数として別のコマンドに渡すにはどうすればよいですか?

したがって、2つのアドレスを提供すると、2つのHTMLリンクを検索するスクリプトがあります。

echo "http://maps.google.be/maps?saddr\=$1\&daddr\=$2" | sed 's/ /%/g'

に送信してから、wget出力をというファイルに保存したいがtemp.html機能しません。誰かが理由を説明したり、解決策を与えることができますか?

#!/bin/bash
url = echo "http://maps.google.be/maps?saddr\=$1\&daddr\=$2" |  sed 's/ /%/g'
wget $url

答え1

バックティック(`)を使用してコマンドを評価し、その出力を置き換えることができます。たとえば、次のようになります。

echo "Number of files in this directory: `ls | wc -l`"

あなたの場合:

wget `echo http://maps.google.be/maps?saddr\=$1\&daddr\=$2 | sed 's/ /%/g'`

答え2

「xargs」を使用できます。簡単な例:

ls -1 *.c | sort -n | xargs cat

xargsはstdinを2つ以上のコマンド呼び出し(上記の例では「cat」)に分割しないことに注意してください。

答え3

実際にURL行を実行しません。

#!/bin/sh
url="$(echo http://maps.google.be/maps?saddr\=$1\&daddr\=$2 | sed 's/ /%/g')"
wget $url

答え4

xargsあるコマンドの出力を別のコマンドのパラメータに入れるのに最適なオプションです。

command1の出力があり、次のコマンドがそれを引数として3使用したいと仮定すると、次のようなものが必要です。3

command2 3(which is output of 1st command) 4 5

だからこれのためにすることができます

command1 | xargs -I{} command2 {} 4 5

ここで、4と5は必要な2つの追加パラメータですcommand2

最初のコマンドの出力を希望する場所に中かっこを入れることができます。

だから、使用

command1 | xargs -I{} command2 {} 

関連情報