스크립트를 실행하려면 어떤 권한이 필요하며 이를 구현하는 방법은 무엇입니까? 뭔가 빠진 것 같아요

스크립트를 실행하려면 어떤 권한이 필요하며 이를 구현하는 방법은 무엇입니까? 뭔가 빠진 것 같아요

세게 때리다

#!/bin/bash
echo "Please enter your name."
read name
then
echo "Good day $name, here is your calendar for this month:"
cal
echo "Today is" `date +%A`
if test $date -lt friday
then 
echo "TGIF"
fi

답변1

필요한 권한은 실행 권한입니다. 하지만 스크립트에 몇 가지 오류가 있습니다. 실행해 보면 첫 번째 오류가 명확하게 표시됩니다.

$ chmod u+x jason.sh 
$ ./jason.sh 
Please enter your name.
Jason
./jason.sh: line 4: syntax error near unexpected token `then'
./jason.sh: line 4: `then'

수정하고 다시 실행하면 얻을 수 있습니다.

$ ./jason.sh 
Please enter your name.
Jason
Good day Jason, here is your calendar for this month:
    February 2020   
Su Mo Tu We Th Fr Sa
                   1
 2  3  4  5  6  7  8
 9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29

Today is Friday
./jason.sh: line 7: test: -lt: unary operator expected

이렇게 날짜를 비교할 수는 없습니다. 확인해주세요.쉘에서 두 날짜를 비교하는 방법은 무엇입니까?

답변2

스크립트를 실행하려면 실행 가능 및 읽기 권한이 필요합니다. 결국 이것은 해석된 언어이고 커널은 이를 한 줄씩 읽어야 합니다. 이러한 권한을 부여하는 명령은 다음과 같습니다."

chmod u+rx script.sh

물론, 쉘 인터프리터에 대한 인수로서 읽기 권한만으로 실행할 수 있습니다:

bash script.sh

답변3

포그라운드에서 루트로 실행하지 않는 경우 스크립트를 실행할 수 있는 권한이 필요합니다.

chmod +x scriptName.sh

그리고 스크립트에 구문 오류가 거의 없으므로 아래 스크립트를 사용할 수 있습니다.

#!/bin/bash
echo "Please enter your name."
read name
echo "Good day $name, here is your calendar for this month:"
cal
echo "Today is" `date +%A`
if [ "`date +%A`" == Friday ]
then
echo "TGIF"
fi

답변4

안녕하세요 @Jason, 이것을 시도해 보세요

chmod u=rx,g=x,o=rwx jason.sh

관련 정보