두 부분을 함께 결합하여 스크립트를 구성하세요.

두 부분을 함께 결합하여 스크립트를 구성하세요.

다음 작업을 수행하기 위한 스크립트를 만들려고 합니다. Lynx 북마크에서 자석 링크를 추출한 다음 이를 컬 명령의 일부로 사용합니다. 이와 같이:

curl http://my_ip:my_port_number/startdownload/magnet_link

자석 링크를 얻으려면 다음이 필요합니다.

lynx -dump -hiddenlinks=listonly lynx_bookmarks.html | grep "magnet" | sed 's/&.*//' | cut -c 7-

하지만 두 부분을 함께 붙여서 스크립트를 만드는 방법을 잘 모르겠습니다.

조언을 좀 드려도 될까요?

그런데 저는 이 분야에 완전 아마추어이고 개선할 수 있는 부분이 있다고 확신합니다.

답변1

따라서 한 명령의 출력을 캡처하여 다른 명령에 사용해야 합니다. bash $(..) 구문을 사용하면 명령을 실행하고 출력을 캡처한 다음 다른 명령에서 사용할 수 있습니다.

한 가지 방법은 출력을 변수로 캡처하는 것입니다. 예를 들면 다음과 같습니다.

shortcut=$(lynx -dump -hiddenlinks=listonly lynx_bookmarks.html | grep magnet | sed 's/&.*//' | cut -c 7-)
curl "$shortcut"

또는 출력을 직접 사용할 수도 있습니다.

curl $(lynx -dump -hiddenlinks=listonly lynx_bookmarks.html | grep "magnet" | sed 's/&.*//' | cut -c 7-)

어느 것을 선택하느냐에 따라 선호도가 달라집니다. 명령의 출력이 여러 번 필요한 경우 출력을 변수로 캡처하여 거기에서 사용하는 것이 좋습니다.

답변2

다음 줄을 스크립트 파일에 입력합니다(예: ad mydownload.sh).

magnet=$(lynx -dump -hiddenlinks=listonly lynx_bookmarks.html | grep "magnet" | sed 's/&.*//' | cut -c 7-)
curl http://my_ip:my_port_number/startdownload/${magnet}

저장 및 종료

chmod 755 mydownload.sh
./mydownload.sh

답변3

bash-4.1$ echo $( echo hi )
hi
bash-4.1$ 

그래서,

curl $( ... )

이러한 명령을 하위 쉘로 실행하여 ...모든 출력을 전달합니다 . 읽을 수 있는 헤더이고 중첩되지는 않지만 백틱을 사용하여 작성할 수도 있습니다.curl$()

grep | sed어쩌면 올바른 호출 한 번으로 대체될 수도 있습니다 awk.

관련 정보