转义 BASH 脚本中的日期输出



我正在研究一个非常简单的 BASH 脚本。我想做的是使用 curl 从网络摄像头中提取图像并将其写入名称带有日期戳的文件。

#! /bin/bash
DATE=$(date +%Y-%m-%d_%H-%M)
DIRECTORY1=home/manager/security_images/Studio_1/
TARGET1=${DIRECTORY1}${DATE}.jpg
curl http://web@192.168.180.211/snapshot.cgi > $TARGET1

当我尝试运行它时,我被告知没有这样的文件或目录。我相信这是由于我的转义错误,但我似乎在每个阶段都尝试了变量周围的引号组合,但仍然无法让它工作。我只是不明白出了什么问题,真的可以使用一些指向我做错了什么的指针。

非常感谢

不,这只是一个错字。

DIRECTORY1=home/manager/security_images/Studio_1/
          ^^ 

应该是

DIRECTORY1=/home/manager/security_images/Studio_1/

答案是肯定的。

至于转义,即使现在只使用安全字符,所以引号在技术上是多余的,默认情况下引用行中的所有$variables是 shell 脚本中的一个好习惯,很少有你不想使用它们的情况。

双引号重定向目标就足够了:

curl http://web@192.168.180.211/snapshot.cgi > "$TARGET1"

只要确保它的路径存在。您可以使用以下命令运行脚本

set -xv

以查看变量的插值方式。

最新更新