명령 행에서 쉘 변수를 다른 매개 변수에 연결하려면 어떻게해야합니까?
예를 들어
#!/bin/sh
WEBSITE="danydiop"
/usr/bin/mysqldump --opt -u root --ppassword $WEBSITE > $WEBSITE.sql
나는 연결해야 .sql
합니다$WEBSITE
답변
${ }
변수를 묶는 데 사용 합니다.
중괄호없이 :
VAR="foo"
echo $VAR
echo $VARbar
줄 것이다
foo
변수 $VARbar
가 존재하지 않기 때문에 아무것도 없습니다 .
중괄호 :
VAR="foo"
echo ${VAR}
echo ${VAR}bar
줄 것이다
foo
foobar
첫 번째를 둘러 쌀 $VAR
필요는 없지만 좋은 습관입니다.
예를 들어 :
#!/bin/sh
WEBSITE="danydiop"
/usr/bin/mysqldump --opt -u root --ppassword ${WEBSITE} > ${WEBSITE}.sql
이 작품 bash
, zsh
, ksh
, 어쩌면 다른 사람도.
답변
변수 내용을 원하는 다른 것으로 연결하십시오.
/usr/bin/mysqldump --opt -u root --ppassword "$WEBSITE" > "$WEBSITE.sql"
큰 따옴표는 연결과 관련이 없습니다. 여기 >$WEBSITE.sql
에서도 효과가 있었을 것입니다. 변수 값에 쉘 특수 문자 (공백 및 \[?*
) 가 포함될 수있는 경우 변수 확장에 필요합니다 . 모든 변수 확장 및 명령 대체에 큰 따옴표를 사용하는 것이 좋습니다 . 즉 항상 write "$WEBSITE"
및 "$(mycommand)"
.
자세한 내용은 $ VAR vs $ {VAR} 및 인용 또는 인용 안함을 참조하십시오 .
답변
나는 보통 따옴표를 사용한다 echo "$WEBSITE.sql"
.
따라서 다음과 같이 쓸 수 있습니다.
#!/bin/sh
WEBSITE="danydiop"
/usr/bin/mysqldump --opt -u root --ppassword $WEBSITE > "$WEBSITE.sql"