如何在命令行中将 shell 变量连接到其他参数?

ane*_*yzm 20 shell shell-script variable

如何在命令行中将 shell 变量连接到其他参数?

例如,

#!/bin/sh
WEBSITE="danydiop" 
/usr/bin/mysqldump --opt -u root --ppassword $WEBSITE > $WEBSITE.sql
Run Code Online (Sandbox Code Playgroud)

我需要连接.sql$WEBSITE

wag*_*wag 31

使用${ }到外壳上的变量。

没有大括号:

VAR="foo"
echo $VAR
echo $VARbar
Run Code Online (Sandbox Code Playgroud)

会给

foo
Run Code Online (Sandbox Code Playgroud)

什么都没有,因为变量$VARbar不存在。

带大括号:

VAR="foo"
echo ${VAR}
echo ${VAR}bar
Run Code Online (Sandbox Code Playgroud)

会给

foo
foobar
Run Code Online (Sandbox Code Playgroud)

附上第一个$VAR不是必需的,而是一个很好的做法。

对于您的示例:

#!/bin/sh
WEBSITE="danydiop" 
/usr/bin/mysqldump --opt -u root --ppassword ${WEBSITE} > ${WEBSITE}.sql
Run Code Online (Sandbox Code Playgroud)

这适用于bash, zsh, ksh,也许其他人也适用。

  • 这适用于所有 Bourne 风格的 shell(Bourne、POSIX、bash、ksh、zsh)、C 风格的 shell(csh、tcsh),甚至适用于没有大括号的 fish。所以它在 unix shell 中真的很普遍。我不会称大括号为好习惯。但我确实在变量替换周围使用双引号系统地调用了良好实践。 (3认同)