如何在这段代码中生成随机数?我尝试使用$RANDOM,但数字仍然相同。如何改进它?
find . -type f -exec sed -i 's/<field name=\"test/<field name=\"test$RANDOM/g' {} \;
如何在这段代码中生成随机数?我尝试使用$RANDOM,但数字仍然相同。如何改进它?
find . -type f -exec sed -i 's/<field name=\"test/<field name=\"test$RANDOM/g' {} \;
您也可以使用这种“一行”方式避免创建脚本文件,例如:
function FUNCtst() { echo "tst:$1";echo "tst2:$1"; }; export -f FUNCtst; find -exec bash -c 'FUNCtst {}' \;
所以,你需要:
而且,无需创建文件!
find
命令时,$RANDOM
函数调用被替换为其结果,而不是在find
运行sed
命令时进行替换。sed -i ...
部分放入脚本中,并将此脚本传递给find
。subst.sh
包含:#!/bin/bash
r=$RANDOM
sed -i "s/<field name=\"test/<field name=\"test${r}/g" $@
那么
find . -type f -exec ./subst.sh {} \;
应该可以解决问题,因为$RANDOM
将会被评估与文件数量相同的次数。
(请注意,随机数在同一文件中仍然是相同的,但对于不同的文件则是不同的。)