게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
[리눅스주의] 쉘프로그래밍 질문하나만 하겠습니다.
게시물ID : it_1480짧은주소 복사하기
작성자 : boXlug
추천 : 0
조회수 : 501회
댓글수 : 4개
등록시간 : 2014/06/22 14:43:29
옵션
  • 베스트금지
  • 본인삭제금지

#!/bin/bash


read -p "Enter a username > " user_name


file_info=$(grep "^$user_name:" $FILE)


echo "$file_info"


if [ -n "$file_info" ]; then

        IFS=':' read user pw uid gid name home shell <<< "$file_info"

        echo "User =    $user"

        echo "UID =     $uid"

        echo "GID =     $gid"

        echo "Full Name = $name"

        echo "Home Dir = $home"

        echo "Shell =   $shell"

else

        echo "No such user $user_name" >&2

        exit 1

fi


쉘프로그래밍 책을 보던 중에 의아한게 있어서 질문드립니다.

위의 코드에서 빨갛게 표시된 곳이 약간 의문인 부분인데요. 책에서는 명령어가 나오기전에 쉘에서 변수를 선언해주는 걸 허용하고 또 그 변수는 해당 명령어에서만 사용되는 환경이 된다고 하는데, 사실 이건 이해가 가는데요. IFS변수가 구분자를 나타내기때문에 passwd 파일로부터 읽어온 문자열을 :를 기준으로 나눠서 각각 다른 변수에 입력하는것도 이해가 갑니다만. 제가 궁금한건 왜 이러한 형태의 선언이 echo명령어를 포함해서는 제대로 적용되지 않는가입니다.

예를들어서 현재 접속중인 쉘에서 FOO라는 변수가 선언되어있지않다면,

FOO='foo' echo $FOO를 타이핑하면 foo가 출력되어야 할거같은데, 그냥 빈칸이 출력됩니다.

그래서 read에만 적용이 되는 건가 했더니 그것 또한 아닌것이, FOO='foo' printenv | grep FOO를 타이핑하면 원하는대로 출력이 나옵니다.

어째서 echo만 똑같은 구문이 제맘처럼 안나오는것인지 궁금합니다. 고수님들 도와주세요 ㅠㅠ


전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호