由于某些原因,如果添加常规变量,则无法从bash脚本运行docker命令,例如:
c=$(date +"%x")
targets="www.example.com"
docker build -t amass https://github.com/OWASP/Amass.git
docker run amass --passive -d $targets > $c.txt
错误如下:
./main.sh: 13: ./main.sh: cannot create 12/29/2018.txt: Directory nonexistent
从终端运行相同的命令可直接操作。我该如何解决?
答案 0 :(得分:1)
根据您的情况,使用日期的%x
选项太危险了,该选项代表:
%x语言环境的日期表示形式(例如,99年12月31日)
如果语言环境不同,您将无法控制任何东西,并且在测试计算机和docker之间可能会有各种行为。
无论如何,使用带斜杠“ /”的日期格式将被解释为目录分隔符会导致问题。
由于两个原因,您应该定义日期的格式。
例如:
#!/bin/bash
c=$(date +'%Y-%m-%d-%H-%M-%S')
targets="www.example.com"
docker build -t amass https://github.com/OWASP/Amass.git
docker run amass --passive -d $targets > $c.txt
您应该在日期中添加尽可能多的信息(小时,分钟,秒...),以为您可以运行脚本;否则,将覆盖前一次运行的输出。