나는 이것을 가지고있다:
bash <(
curl_url='https://raw.githubusercontent.com/oresoftware/run-tsc-if/master/run.sh'
curl -H 'Cache-Control: no-cache' --silent "$curl_url"
)
해당 URL의 bash 스크립트는 매개변수를 사용합니다 $1
. 이 실행 스타일을 사용하여 매개변수를 전달하는 방법이 있습니까, 아니면 환경 변수를 사용해야 합니까?
나는 이것이 효과가 있을 것이라고 생각했는가?
bash "first arg" <(
curl_url='https://raw.githubusercontent.com/oresoftware/run-tsc-if/master/run.sh'
curl -H 'Cache-Control: no-cache' --silent "$curl_url"
)
하지만 이건 추측일 뿐이고 잘못된 것 같습니다..
내 테스트에 따르면 이것이 올바른 것 같습니다.
bash <(
my_url='https://raw.githubusercontent.com/oresoftware/run-tsc-if/master/run.sh'
curl -H 'Cache-Control: no-cache' --silent "$my_url"
) "first arg" # add the argument here
누군가 이것을 확인할 수 있다면 좋을 것 같습니다. 다음과 같이 확인됩니다.
bash <(echo 'echo "first: $1"') 'blaq'
다음과 같이 에코됩니다.
첫째 : 브랙
답변1
당신은 그것을 사용할 수 있습니다프로세스 교체그리고 생성된 스크립트를 Bash의 표준 입력으로 리디렉션합니다.
$ bash -s 'first argument' 'second argument' < <(echo 'printf "%s\n" "$@"')
first argument
second argument
명령을 다음 echo
으로 바꾸면 curl
됩니다.
에서 man bash
:
-s 옵션이 있거나 옵션 처리 후 남은 인수가 없는 경우 표준 입력에서 명령을 읽습니다. 이 옵션을 사용하면 대화형 쉘을 호출할 때 위치 매개변수를 설정할 수 있습니다.
답변2
이것들은 모두 작동하는 것 같습니다:
bash <(echo 'echo "first: $1 second: $2"') '111' '222'
그리고
bash -s '111' '222' < <(echo 'echo "first: $1 second: $2"')
첫 번째 매개변수처럼 bash는 첫 번째 매개변수에서 파일 설명자를 읽고, 두 번째 매개변수에서는 표준 입력에서 읽습니다.