it-swarm-ko.tech

한 명령의 출력을 명령 행 인수로 다른 명령에 전달하는 방법은 무엇입니까?

그래서 두 개의 주소를 주면 두 개의 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
59
Matt D

백틱 (`)을 사용하여 다음과 같이 명령을 평가하고 명령 출력을 대체 할 수 있습니다.

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

귀하의 경우 :

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

"xargs"를 사용할 수 있습니다. 사소한 예 :

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

Xargs가 stdin을 두 개 이상의 쉼표 호출로 분할하지 않도록주의해야합니다 (위 예에서 "cat").

20
Bruce Ediger

실제로 URL 줄을 실행하지 않습니다.

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

여기에 답변을 조합하여 사용할 수있는 것 같습니다. 공백 문자를 URL에서 이스케이프 된 ASCII 값으로 바꾸고 싶다고 생각합니다. 이렇게하려면 "%"뿐만 아니라 "% 20"으로 바꿔야합니다. 완전한 답변을 제공하는 솔루션은 다음과 같습니다.

$ wget `echo http://maps.google.be/maps\?saddr\=$1\&daddr\=$2 | sed -e 's/\ /\%20/g'` -q -O temp.html

백틱은 동봉 된 명령이 먼저 해석되고 결과가 wget으로 전송됨을 나타냅니다. sed 명령에서 공백과 % 문자를 이스케이프 처리하여 잘못 해석되지 않도록했습니다. wget에 대한 -q 옵션은 명령 출력을 화면에 인쇄하지 못하게하고 (작업 중 상태에 신경 쓰지 않을 경우 스크립팅에 적합) -O 옵션은 출력 파일을 지정합니다. 참고로, 출력을 파일로 저장하지 않고 터미널에서 출력하려면 파일 이름 대신 "-"를 사용하여 stdout을 나타냅니다.

5
SethG

wget은 또한 - 스위치.

출력을 파일로 저장하려면 -O 스위치.

echo http://maps.google.be/maps?saddr\=$1\&daddr\=$2 | sed 's/ /%/g' | wget -i- -O temp.html
3
wag

xargs는 명령의 출력을 다른 명령의 인수에 배치하는 가장 좋은 옵션입니다.

Command1의 출력이 3이고 다음 명령에서이 3를 인수로 사용하여 다음과 같은 것을 원한다고 가정하십시오.

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

이를 위해 당신은 다음과 같이 갈 수 있습니다

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

여기서 4와 5는 command2에 필요할 수있는 다른 두 가지 인수입니다.

첫 번째 명령의 출력을 원하는 인수 위치에 중괄호를 넣을 수 있습니다.

따라서 사용

command1 | xrgs -I{} command2 {} 
0
Ria Sharma