?
명령줄에서 일부 매개변수를 가져와 URL 매개변수가 포함된 URL(예: 포함 및 포함 &
) 에 입력하는 Bash 함수를 작성하려고 합니다 .
URL에 매개변수가 하나만 있으면 아무런 &
문제도 없습니다. 즉, 다음 함수를 정의하면:
test() {
cmd.exe /c start https://example.com/\?foo=$1
}
으로 호출하면 test bar
내 브라우저에서 URL이 열립니다 https://example.com/?foo=bar
. 이는 완전히 정확합니다.
문제는 두 번째 URL 매개변수를 추가하려고 할 때입니다. 그런 다음 다음과 같이 기능을 확장했습니다.
test() {
cmd.exe /c start https://example.com/\?foo=$1\&baz=$2
}
그런데 ( ) 로 호출했을 때 test bar qux
이전과 동일한 URL을 브라우저에서 열면 https://example.com/?foo=bar
터미널에 오류가 표시됩니다.'baz' is not recognized as an internal or external command, operable program or batch file.
URL을 큰따옴표로 묶는 것도 도움이 되지 않습니다.
test() {
cmd.exe /c start "https://example.com/\?foo=$1\&baz=$2"
}
URL이 열리지 https://example.com//?foo=bar"
만 여전히 오류가 발생합니다.'baz' is not recognized as an internal or external command, operable program or batch file.
답변1
cmd.exe
명령을 통해 호출 되므로cmd.exe
이스케이프 구문&
이스케이프해야 하는 ^&
(그리고 ?
이스케이프할 필요가 없는) Bash 이스케이프 구문 대신 사용해야 합니다 . 다음은 예상대로 작동합니다.
test() {
cmd.exe /c start "https://example.com/?foo=$1^&baz=$2"
}
(참고로 이는 'baz' is not recognized as an internal or external command, operable program or batch file.
Windows cmd.exe
개념인 배치 파일을 의미합니다.)