我正在研究一个非常简单的BASH脚本。我想要做的是使用curl从webcamera中提取图像并将其写入名称为datestamped的文件。
#! /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
当我尝试运行时,我被告知没有这样的文件或目录。我认为这是由于我的转义错误,但我在每个阶段都尝试了各种变量的引号,但仍然无法使其发挥作用。我只是不明白出了什么问题,并且可以真正使用一些指针来解决我的错误。
非常感谢
答案 0 :(得分:0)
双重引用重定向目标就足够了:
curl http://web@192.168.180.211/snapshot.cgi > "$TARGET1"
确保其路径存在。您可以使用
运行脚本set -xv
查看变量的插值方式。
答案 1 :(得分:0)
不,这只是一个错字。
DIRECTORY1=home/manager/security_images/Studio_1/
^^
应该是
DIRECTORY1=/home/manager/security_images/Studio_1/
当然。
至于转义,即使现在只使用安全字符,所以引用在技术上是多余的,默认情况下在每个行中引用所有 $variables
是 shell脚本中的一个好习惯,当你不想使用它们的情况很少。