2017-08-15 59 views
0

我一直在试图编写一个bash脚本。它的一部分应该没有任何东西来替换一部分字符串。用bash脚本中的变量替换其他文本的子字符串

这里就是我想要做的

$dbname=$1 
$dbNameActual="${$dbname/.sql/}" 

date 
echo $dbNameActual 

我尝试了一些从堆栈建议。但没有得到。我尝试添加sed,但这似乎不起作用。

的想法是,我有一个脚本,它需要在数据库导入文件名,说db250317.sql和输出db250317

我正在运行Ubuntu 16.04 LTS

回答

3

您不要在表达式中输入$两次,也不要在要分配的变量(这不是PHP或Perl)之前放入$。它应该是:

dbNameActual="${dbname/.sql/}" 

另外,如果你想删除的东西总是在最后,你可以使用%将其删除:

dbNameActual="${dbname%.sql}" 

还记得引用变量时你稍后使用它,以防文件名包含空格。你几乎总是应该引用变量,除非你有特殊的理由不要。

+0

也许还会提到围绕论点引用回声; 'echo“$ dbNameActual”'(除非你特别需要shell对值执行空格标记和通配符扩展;请参阅https://stackoverflow.com/questions/10067266/when-to-wrap-quotes-around-a-壳变量) – tripleee

相关问题