Intereting Posts

Как получить 2 разных результата из 1 файла в unix?

Поэтому я пытаюсь сделать подземелье, и я хочу иметь 2 разных ответа, когда я вхожу в одну комнату, но я, насколько я могу это сделать. Как получить 2 разных результата из 1 файла?

Поэтому, когда вы открываете файл в первый раз, я хочу, чтобы он отображал конкретный контент, когда вы возвращаетесь к этому файлу и снова открываете его, я хочу, чтобы он отображал другой контент. Однако оба содержимого находятся в одном файле. Просто хочу, чтобы один контент читался для первого посещения, а второй контент – для повторных посещений.

Возможно ли иметь два отдельных выхода в один файл. Например, если вы запустите файл ниже в первый раз, вы получите ответ «sup sup», и если вы должны запустить его во второй раз, вы получите ответ «нет». Это всего лишь пример, но это то, к чему я пытаюсь добраться. Так как же я могу это сделать?

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

Вы можете использовать переменную $RANDOM из сценариев Bash, чтобы каждый раз, когда вы ее называете, что-то другое. Он возвращает целые числа (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 четное, тогда мы выводим сообщение «ровно», иначе мы выходим «нечетным».

Это может быть адаптировано к опции «да» или «нет», которую вы можете использовать в своем скрипте.

Рекомендации

  • 9.3. $ RANDOM: генерировать случайное целое число

Это будет зависеть от того, как контент размещается в этом файле, однако вам просто нужно будет отслеживать, открыли ли вы этот файл в скрипте.

 # 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, eg: head -1 the_file.txt # Prints line 1 file_opened=1 else # code for subsequent times, eg: sed -n '2{p;q}' the_file.txt # Prints line 2 fi