명령 줄에서 bash 스크립트를 실행하려고합니다. 때로는 공백이 포함 된 인수가 필요합니다.
bash test.sh -l "path/to/image/may contain spaces.png"
이를 제공하는 올바른 방법은 무엇입니까? 나는 탈출을 시도 \
했지만 소용이 없습니다.
다음과 같은 오류가 발생합니다.
bash splash.sh -b \#\000000 -l \"img/Rev Logo.jpg\"
convert: unable to open image ''"img/Rev'': No such file or directory @ error/blob.c/OpenBlob/3093.
이 코드 비트와 관련이 있습니다.
logo="$1"
if checkBackground -eq 1
then
convert -size $size canvas:$back -background $back $tmp01
fi
convert \'$logo\' -background $back $tmp02
composite $tmp02 -gravity center $tmp01 output.jpg
스크립트의 첫 번째 인수가 "foo bar"인 경우 다음 줄은 다음과 같습니다.
convert \'$logo\' -background $back $tmp02
첫 번째 인수로 convert
문자열 'foo
에 전달하고 두 번째 인수를 전달합니다 bar'
. 당신은 아마 그것을 원하지 않을 것입니다. 해당 줄을 다음과 같이 변경하십시오.
convert "$logo" -background "$back" "$tmp02"
일반적으로 모든 변수를 큰 따옴표로 묶으십시오.
그리고 스크립트를 호출 할 때 인수를 인용하십시오. 스크립트를 다음과 같이 호출하는 경우 :
bash splash.sh -b \#\000000 -l \"img/Rev Logo.jpg\"
그런 다음 두 개의 개별 인수, "img/Rev
및 Logo.jpg"
. 큰 따옴표가있는 파일 이름을 갖는 것은 완벽하게 유효하지만 매우 드문 경우입니다. 단일 인수를 전달하려면 img/Rev Logo.jpg
다음과 같이 스크립트를 호출 할 수 있습니다.
bash splash.sh -b "#000000" -l "img/Rev Logo.jpg"
또는
bash splash.sh -b \#000000 -l img/Rev\ Logo.jpg
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다