使用bash变量运行docker命令

时间:2018-12-29 13:42:39

标签: bash docker

由于某些原因,如果添加常规变量,则无法从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

从终端运行相同的命令可直接操作。我该如何解决?

1 个答案:

答案 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

您应该在日期中添加尽可能多的信息(小时,分钟,秒...),以为您可以运行脚本;否则,将覆盖前一次运行的输出。