6

我正在制作一个生成文件来重命名其中包含随机数的文件(我是 shell 脚本的新手)。我不明白为什么,但是当我运行文件时,$rand 被赋予了值“ANDOM”。当我在makefile之外运行它时,它可以工作。

我在 Mac os 终端中运行它,以防它有帮助。

all: renamefiles

renamefiles:
    rand=$RANDOM && mv myfile.css $rand-myfile.css && mv myotherfile.css $rand-myotherfile.css
4

3 回答 3

8
  1. 使用日期/时间戳不是更容易/更好,以便重命名的文件按日期顺序列出吗?

  2. 您需要在您希望 shell 看到的每个$标志中使用两个标志。makefile$

因此:

all: renamefiles

renamefiles:
    rand=$$RANDOM && \
    mv myfile.css      $$rand-myfile.css && \
    mv myotherfile.css $$rand-myotherfile.css

或者,使用日期/时间戳:

all: renamefiles

renamefiles:
    time=$$(date +'%Y%m%d-%H%M%S') && \
    mv myfile.css      $$time-myfile.css && \
    mv myotherfile.css $$time-myotherfile.css
于 2013-01-19T00:41:34.147 回答
2

要在一个或多个 make 变量中使用随机数,以下对我来说很好:

FOO="some string with \"$$rand\" in it"
BAR=" you may use it $$rand times."
foobar:
    rand=$$$$ && \
    echo $(FOO) $(BAR)
于 2015-02-05T13:56:20.970 回答
0

例如,您可能需要用大括号(或圆括号)将多字母宏名称括起来

${RANDOM}
$(RANDOM)

参考

于 2013-01-18T22:54:55.070 回答