【问题标题】:Replacing substring with other text in variable inside a bash script [duplicate]用bash脚本中变量中的其他文本替换子字符串[重复]
【发布时间】:2018-01-22 22:21:12
【问题描述】:

我一直在尝试编写一个 bash 脚本。它的一部分应该用任何内容替换字符串的一部分。

这就是我想要做的事情

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

date
echo $dbNameActual

我从堆栈中尝试了一些建议。但一无所获。我尝试添加 sed,但这似乎不起作用。

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

我正在运行 Ubuntu 16.04 LTS

【问题讨论】:

    标签: bash ubuntu ubuntu-16.04


    【解决方案1】:

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

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

    另外,如果您要删除的内容始终位于末尾,您可以使用% 将其删除:

    dbNameActual="${dbname%.sql}"
    

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

    【讨论】:

    • 也许还提到在参数周围加上引号以回显; echo "$dbNameActual"(除非您特别要求 shell 对值执行空格标记化和通配符扩展;请参阅 stackoverflow.com/questions/10067266/…
    猜你喜欢
    • 1970-01-01
    • 2016-02-07
    • 1970-01-01
    • 2021-11-20
    • 2012-04-21
    • 1970-01-01
    • 2020-10-12
    • 2022-07-21
    • 2014-10-29
    相关资源
    最近更新 更多