如何在unix中从1个文件获得2个不同的结果?

如何在unix中从1个文件获得2个不同的结果?

所以我正在尝试制作一个地牢,当我进入一个房间时我希望有两种不同的反应,但我只能做到这一点。如何从 1 个文件中获得 2 个不同的结果?

因此,当您第一次打开文件时,我希望它显示特定内容,当您返回该文件并重新打开它时,我希望它显示不同的内容。但是,这两个内容都在同一个文件中。只需要在第一次访问时阅读一个内容,在重复访问时阅读第二个内容。

是否可以将两个单独的输出输出到一个文件。例如,如果您第一次运行下面的文件,您会得到“sup sep”的响应,如果您第二次运行它,您会得到“no no”的响应。这只是一个例子,但这就是我想要达到的目的。那么我到底该如何管理呢?

this=1
if [ "$this"=="1" ]; then
echo "sup sup"
let "this=$this - 1"
fi
if [ "$this"=="0" ]; then
echo "no no"
fi

答案1

您可以在 Bash 脚本中使用该$RANDOM变量,以便每次调用它时都获得不同的结果。它返回整数 (0-32767),但您可以测试这些数字是偶数还是奇数,然后将其变为是或否。

$ echo $RANDOM
2104

$ echo $RANDOM
25188

偶数/奇数示例

$ if (( RANDOM % 2 )); then echo even; else echo odd; fi
even
$ if (( RANDOM % 2 )); then echo even; else echo odd; fi
even
$ if (( RANDOM % 2 )); then echo even; else echo odd; fi
odd

上面使用模除运算符将当前$RANDOM数字除以 2。如果$RANDOM是偶数,则我们回显消息“even”,否则我们回显“odd”。

这可以修改为您可以在脚本中使用的“是”或“否”选项。

参考

答案2

这取决于内容在该文件中的排列方式,但是您只需跟踪是否在脚本中打开了该文件。

# Example where the first time opening, line 1 is printed, and subsequent times
# line 2 is printed
file_opened=0
# ... code
if [ $file_opened -eq 0 ]; then
    # code for first time opening, e.g.:
    head -1 the_file.txt # Prints line 1
    file_opened=1
else
    # code for subsequent times, e.g.:
    sed -n '2{p;q}' the_file.txt # Prints line 2
 fi

相关内容