AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1003867
Accepted
beard black
beard black
Asked: 2020-02-21 03:24:40 +0800 CST2020-02-21 03:24:40 +0800 CST 2020-02-21 03:24:40 +0800 CST

echo 命令,需要替换

  • 772

我编写了一个备份日志脚本并在 echo 中有 2 个变量,但仍然无法正常工作。

我的命令:

echo " DB-Size $(du -hs /backup/db/db_$(date +%F).sql " >> /backup/backup.log

在我的 echo 语句中,我有命令变量,在命令变量中有另一个变量。我需要改变什么。对于每一个帮助,我很感激。

亲切的问候

黑胡子

linux scripting ubuntu bash shell
  • 2 2 个回答
  • 50 Views

2 个回答

  • Voted
  1. Best Answer
    Phill W.
    2020-02-21T07:27:52+08:002020-02-21T07:27:52+08:00

    在 echo 中有 2 个变量

    事实上,你没有。

    变量用花括号括起来:

    NAME=Fred
    echo ${NAME}"
    

    你所拥有的是命令调用。"$(" 和 ")" 分隔符内的所有内容都作为单独的命令执行,并且该命令的输出作为调用的结果“返回”:

    echo "$( pwd )" 
    

    我认为您的意图是根据当前日期创建文件路径,然后将该文件路径输入 du 命令。所以,一步一步:

    你的文件路径是:

    /backup/db/db_$(date +%F).sql
    

    这个生成的值中不能有任何空格(%F 返回 YYYY-MM-DD),所以我们不必担心引用文件路径。

    将其“插入”到 du 调用中:

    du -hs /backup/db/db_$(date +%F).sql
    

    最后,在“顶级”回显命令中调用它:

    echo "DB-Size $(du -hs /backup/db/db_$(date +%F).sql)" >> /backup/backup.log
    

    注意大括号的位置——“$(”开始调用,“)”结束。您正在调用两个命令,因此您需要两个结束的 ')'。
    另请注意,引号较少 - 一个用于开始字符串值,另一个用于结束它。因为它们是双引号,shell 将扩展其中的所有位,包括变量和命令调用 - 如果它们是单引号,它不会这样做,将整个事物视为字符串文字。

    • 4
  2. beard black
    2020-02-21T04:27:15+08:002020-02-21T04:27:15+08:00

    echo " DB-Size "$(du -hs /backup/db/db_"$(date +%F)".sql" " >> /backup/backup.log

    为每个变量添加“$”解决了这个问题。

    • 0

相关问题

  • 更改 PHP 的默认配置设置?

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve