所以我正在尝试制作一个地牢,当我进入一个房间时我希望有两种不同的反应,但我只能做到这一点。如何从 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