bash - 变量输出
问题描述
我正在为备份解决方案编写一个新脚本。现在我想将我在终端中看到的错误消息保存到日志文件中。因此,我想将输出写入一个变量。
我在里面写了一个错误。选项“defaults-file”缺少“--”。
通过一个简单的示例,它起作用了:
#!/bin/bash
log=$(date)
echo $log
这是代码片段:
#!/bin/bash
DATE=`date +\%Y\%m\%d\%H\%M\%S`.sql
log=$(`mysqldump defaults-file=/home/user/.my.cnf cloud > backup_$DATE`)
echo $log
解决方案
您没有捕获任何字符串,log
因为您的mysql
命令将其所有标准输出发送到文件。
在变量中捕获标准输出以便您可以echo
将该变量转换为标准输出无论如何都是一种反模式(如果您不使用双引号将字符串 you 加上一个错误echo
)。
如果要将标准错误输出重定向到标准输出,请使用另一个重定向。
#!/bin/bash
# Also, don't use uppercase for private variables
# and prefer $(command) over obsolescent `command`
date=$(date +%Y%m%d%H%M%S).sql
mysqldump defaults-file=/home/user/.my.cnf cloud 2>&1 > "backup_$DATE"
2>&1
重定向导致错误消息转到标准输出文件描述符。重定向导致(原始>
)标准输出转到文件。
推荐阅读
- html - 如何在 BS 中将文本环绕在图像周围,将文本置于移动设备上的图像下方
- spring-mvc - 如何在页面重新加载时在 JSP 页面中保留类型文件的输入
- python - Pandas Plotting 在 x 轴上显示所有日期值(matplolib 仅显示少数值),格式为 MMM-YYYY
- javascript - 使用 React Redux 时出现以下错误 - TypeError: Cannot read property 'id' of undefined
- swiftui - SwiftUI HealthKit 氧饱和度
- react-native - REACT NATIVE - Expo AV didJustFinish
- c - linux内核的linked_list的list_entry返回随机值
- spring - 在 application.properties 文件中使用 Azure DevOps 的可变组,还是使用安全文件更好?
- android - 无法解析 glide 数据集中的函数 getImageUrl()
- spring - @JsonIgnore 和 @JsonIgnoreProperties 有什么区别