Answers:
使用${ }
到外壳上的变量。
不带花括号:
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
,也许其他人了。
${ }
不要在任何意义上都是串联的。例如,ELP=elp && echo $ELP && man --h${EPL}
不起作用。
只需将变量内容连接到您想要连接的其他任何内容,例如
/usr/bin/mysqldump --opt -u root --ppassword "$WEBSITE" > "$WEBSITE.sql"
双引号与串联无关:这里>$WEBSITE.sql
也可以使用。当变量的值可能包含一些shell特殊字符(空格和\[?*
)时,就需要在变量扩展周围使用它们。我强烈建议在所有变量扩展和命令替换周围加上双引号,即始终写入"$WEBSITE"
和"$(mycommand)"
。
有关更多详细信息,请参见$ VAR与$ {VAR}并引用或不引用。
我通常使用引号,例如echo "$WEBSITE.sql"
。
所以你可以这样写:
#!/bin/sh
WEBSITE="danydiop"
/usr/bin/mysqldump --opt -u root --ppassword $WEBSITE > "$WEBSITE.sql"
.
它不是变量名中的有效字符。如果要连接以有效字符开头的字符串(例如,“ $ WEBSITEsql”无效),请参见wag的答案