Shell 在makefile中使用$RANDOM
我正在制作一个makefile来重命名包含随机数的文件(我是shell脚本的新手)。我不明白为什么,但当我运行文件时,$rand被赋予值“ANDOM”。当我在makefile之外运行它时,它可以工作 我在Mac os终端上运行这个,以防有用Shell 在makefile中使用$RANDOM,shell,makefile,terminal,Shell,Makefile,Terminal,我正在制作一个makefile来重命名包含随机数的文件(我是shell脚本的新手)。我不明白为什么,但当我运行文件时,$rand被赋予值“ANDOM”。当我在makefile之外运行它时,它可以工作 我在Mac os终端上运行这个,以防有用 all: renamefiles renamefiles: rand=$RANDOM && mv myfile.css $rand-myfile.css && mv myotherfile.css $rand-myo
all: renamefiles
renamefiles:
rand=$RANDOM && mv myfile.css $rand-myfile.css && mv myotherfile.css $rand-myotherfile.css
例如,可能需要将多字母宏名称用大括号(或括号)括起来
${RANDOM}
$(RANDOM)
$
,需要在makefile
中使用两个$
符号all: renamefiles
renamefiles:
time=$$(date +'%Y%m%d-%H%M%S') && \
mv myfile.css $$time-myfile.css && \
mv myotherfile.css $$time-myotherfile.css
要在一个或多个make变量中使用随机数,以下操作对我来说很好:
FOO="some string with \"$$rand\" in it"
BAR=" you may use it $$rand times."
foobar:
rand=$$$$ && \
echo $(FOO) $(BAR)
这将评估
make
变量RANDOM(它可能不存在,也不是随机的)。在本例中,我认为诀窍在于编写$
将一个$
放入shell:rand=$$RANDOM
或rand=$${RANDOM}
$RANDOM是我第一次想到的,但时间肯定更好。感谢您请注意,$RANDOM
是一个内置的bash变量,而不是在所有shell中(与$$
不同,它应该在所有兼容POSIX的shell中都可用,请参阅)。使用默认的shell。要指定使用哪个shell make,请定义一个变量:shell=/bin/bash
或(通过cmd行参数)make shell=/bin/bash
请参阅:非常感谢@mems对已接受答案的评论。尽管这个答案并没有解决所陈述的用例,但它符合我希望的问题:)
FOO="some string with \"$$rand\" in it"
BAR=" you may use it $$rand times."
foobar:
rand=$$$$ && \
echo $(FOO) $(BAR)