【发布时间】:2017-05-08 11:57:26
【问题描述】:
我正在尝试使用 bash 生成一个随机数,但它必须是唯一的。所以我想将生成的数字保存在一个文件中,每次生成一个数字时都必须抓取文件并检查该数字是否已经生成。
这是我必须生成的数字:
function _generateNumber
{
echo -e "\e[32m Setting node port\e[0m"
NUM=$(shuf -i 3000-3999 -n 1)
echo -e "\e[32m Generated: ${NUM} \e[0m"
portsDir=/inc/ports.txt
if grep -Fxq "$portsDir"
then
echo -e "\e[32m I found the directory \e[0m"
if [ -f "$portsDir" ]
then
echo -e "\e[32m I have not found the code yet \e[0m"
echo "$NUM" > "$portsDir"
fi
echo $NUM
else
echo -e "\e[32m I have found the code, generate a new one \e[0m"
_generateNumber
fi
}
node_port=$(_generateNumber)
我创建了 /inc/ports.txt 文件,但没有写入任何内容,而且 echo 为空且未显示其中的值。
【问题讨论】:
-
顺便说一句,我不认为这是对递归的适当使用。只需使用一个while循环。
标签: bash