在bash脚本

时间:2017-08-15 01:36:31

标签: bash ubuntu ubuntu-16.04

我一直在尝试编写一个bash脚本。它的一部分应该用什么都不替换字符串的一部分。

这是我正在尝试做的事情

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

date
echo $dbNameActual

我尝试了一些堆栈的建议。但无处可去。我尝试添加sed,但这似乎不起作用。

我的想法是我有一个脚本,它接受一个数据库导入文件名,比如说db250317.sql并输出db250317

我正在运行 Ubuntu 16.04 LTS

1 个答案:

答案 0 :(得分:3)

您不必在表达式中放置$两次,并且不要将$放在您指定的变量之前(这不是{t}} PHP或Perl)。它应该是:

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

此外,如果您尝试删除的内容始终在最后,您可以使用%将其删除:

dbNameActual="${dbname%.sql}"

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