그래서 방에 들어갔을 때 두 가지 반응이 나오는 던전을 만들려고 하는데, 할 수 있는 건 이것뿐이에요. 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
짝수이면 "짝수" 메시지를 에코하고, 그렇지 않으면 "홀수" 메시지를 에코합니다 .
이는 스크립트에서 사용할 수 있는 "예" 또는 "아니요" 옵션으로 수정될 수 있습니다.
인용하다
답변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