2014-11-22 67 views
0

我想执行从bash脚本如何在BASH中执行命令字符串?

exiftool -r -v5 -P -ext mov -ext avi -ext mp4 -ext 3gp "-Directory<MediaCreateDate" -d "/media/data/Home Movies/testdestdir/%Y/%b/" "/media/data/Home Movies/testsrcdir/" 

我已经通过回它看起来罚款的变量时,但我不能从bash脚本执行它连接字符串为$的CmdExec建立了这个以下。 我试过各种组合,没有 运气。

`$CMDEXEC` >> $LOGFILE 

$($CMDEXEC) >> $LOGFILE 

+0

不要把你的命令变成变量!参见[BashFAQ/050](http://mywiki.wooledge.org/BashFAQ/050)。 – 2014-11-22 21:08:05

+0

伟大的链接@gniourf_gniourf我会在时间允许的情况下改进我的脚本。 – SebS 2014-11-22 21:32:01

回答

1

你尝试eval "$CMDEXEC" >> "$LOGFILE"

+0

我做了,现在正在工作。我意识到我忽略了变量中的E,如$ CMDEXE – SebS 2014-11-22 21:17:54

+0

小心解释为什么''不起作用? – SebS 2014-11-22 21:18:33

+0

@SebS很高兴知道。但是,正如gniourf_gniourf在他的评论中所链接的那样,将命令放入变量中被认为是一种糟糕的做法。所以请避免,除非你有充分的理由不这样做。至于''不工作,'eval'会导致shell解释器在变量扩展后再次解释,而''不会。请参阅http://stackoverflow.com/questions/11065077/eval-command-in-bash-and-its-typical-uses – toddlermenot 2014-11-22 21:22:53