【发布时间】:2012-12-03 01:09:16
【问题描述】:
我正在尝试创建一个 bash 脚本,它本质上就像一个具有 6 种不同响应(是、否、可能、很难说、不太可能和未知)的魔术 8 球。关键是一旦给出了响应,在所有响应都给出之前不应再次给出。
这是我目前所拥有的:
#!/bin/bash
echo "Ask and you shall receive your fortune: "
n=$((RANDOM*6/32767))
while [`grep $n temp | wc awk '{print$3}'` -eq 0]; do
n=$((RANDOM*6/32767))
done
grep -v $n temp > temp2
mv temp2 temp
基本上,我在临时文件的不同行上有 6 个响应,我正在尝试构建循环,以便一旦给出响应,它会创建一个没有该响应的新文件 (temp2),然后将其复制回来到温度。然后一旦临时文件为空,它将从头开始。
我非常肯定我当前的内部循环是错误的,我需要一个外部循环,但我对此很陌生,我被卡住了。
任何帮助将不胜感激。
【问题讨论】:
-
感谢 h3nr1x 清理格式。我最初以正确的格式提交了问题,但由于某些原因导致它变得杂乱无章。
-
别担心,我现在正在尝试运行您的脚本
-
能否请您发布
temp文件内容?我正在尝试使用这种格式,但正如我所见,它看起来有 3 列,对吧? -
它有各自的响应,编号为一行,如下所示:1 是 2 否
-
对不起,我没有意识到点击回车提交评论,但每个响应都在自己的行上,行编号。它没有在 cmets 中单独显示,但如果不清楚,我可以发布一个屏幕截图给你看。