이 셸 스크립트를 파일에 저장했습니다. 기본 문자열 대체를 수행합니다.
#!/bin/sh
html_file=$1
echo "html_file = $html_file"
substr=.pdf
pdf_file="${html_file/.html/.pdf}"
echo "pdf_file = $pdf_file"
명령 줄에 붙여 넣으면 정상적으로 작동합니다.
$ html_file="/home/max/for_pauld/test_no_base64.html"
echo "html_file = $html_file"
substr=.pdf
pdf_file="${html_file/.html/.pdf}"
echo "pdf_file = $pdf_file"
준다
html_file = /home/max/for_pauld/test_no_base64.html
pdf_file = /home/max/for_pauld/test_no_base64.pdf
그것이 위의 에코 출력 결과입니다. 의도 한대로 작동합니다.
하지만 스크립트를 호출하면
$ saucer "/home/max/for_pauld/test_no_base64.html"
나는이 출력을 얻는다 :
html_file = /home/max/for_pauld/test_no_base64.html
/home/max/bin/saucer: 5: /home/max/bin/saucer: Bad substitution
내 스크립트가 다른 버전의 bash 또는 다른 것을 사용하고 있습니까? Shebang 회선을 변경해야합니까?
sh
하고 bash
. 내가 읽어 줄게 귀하의 의견을 답변에 귀찮게 할 수 있다면 올바른 것으로 표시합니다.
#!/usr/bin/env bash
shebang으로 사용하고 원하는대로 위치 정의 된 대체물을 사용하지만 이식성 경고가 있습니다. 그리고 읽으십시오 : unix.stackexchange.com/a/48787/27616