셸 스크립트 실행 시에는 절차를 따지지 않나요?
조회수 368회
"이것이 리눅스이다"(우재남 저)라는 책 속 7장 셸 스크립트 프로그래밍 단원을 학습 중
의구심이 들었습니다.
*set.sh*
1. #!/bin/sh
2. echo "today's date is $(date)."
3. set $(date)
4. echo "today's day is $4day."
5. exit 0
*결과값*
today's date is 2021. 05. 11. (화) 20:35:04 KST.
today's day is (화)day.
책의 셸 스크립트단원 도입부분을 보면 이와 같은 내용이 있습니다.
리눅스의 대부분이 C로 작성되었기에 셸 스크립트는 C와 유사한 방법으로 프로그래밍 할 수 있다
그렇다면 셸 스크립트 프로그래밍은 절차지향인가요?
위 예제에서 2행에서의 $(date)는 3행에서 그 값이 결정이 납니다.
그래서 C에서라면 오류가 나야하는 문장인데 셸 스크립트에서는 정상작동을 하네요
어떻게 실행이 되는지 설명부탁드립니다!!
1 답변
-
질문의
위 예제에서 2행에서의 $(date)는 3행에서 그 값이 결정이 납니다.
라는 해석이 잘못 되었습니다.올려주신 코드는 위에서부터 한줄씩 실행된 것입니다.
$(a)
는 a라는 명령어를 실행하고 그 결과를 그 자리로 가져오라는 겁니다.echo "today's date is $(date)."
에서 date는 리눅스 명령어 이고, 그 결과가$(date)
자리에 반환되어,today's date is 2021. 05. 11. (화) 20:35:04 KST.
이 출력된 겁니다.즉,
date
의 결과가2021. 05. 11. (화) 20:35:04 KST
입니다.set
은 뒤에 있는 실행결과를 명령줄 인수 처럼 쓰겠다는 겁니다.set $(date)
하게 되면 date의 결과인2021. 05. 11. (화) 20:35:04 KST
이 얻어지는데 이 문자열을 명령줄 인수처럼 쓰겠다는 것입니다.따라서
set $(date)
이 실행된 후에,2021.
이 $1이고,05.
이 $2가 되고,11.
이 $3이고,(화)
이 $4이고,20:35:04
이 $5이고,KST
이 $6입니다.그래서 그 다음줄에
$4day
가(화)day
라고 출력된 것입니다.-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력