如何在此代码中生成随机数? 我尝试使用$ RANDOM,但数字仍然相同。如何改进?
find . -type f -exec sed -i 's/<field name=\"test/<field name=\"test$RANDOM/g' {} \;
答案 0 :(得分:2)
您也可以避免使用这种“一行”方式创建脚本文件,例如:
function FUNCtst() { echo "tst:$1";echo "tst2:$1"; }; export -f FUNCtst; find -exec bash -c 'FUNCtst {}' \;
所以,你:
并且,无需创建文件!
答案 1 :(得分:1)
这是因为$RANDOM
函数调用在运行find
命令时被其结果替换,而不是在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
将被评估为有文件的次数。
(请注意,在一个特定文件中,随机数仍然相同,但对于不同的文件,它将是不同的。)