<p align="left" style="list-style:none;margin:0px;padding:0px;color:#666666;font-family:'돋움', dotum, Helvetica, sans-serif;line-height:16.799999237060547px;"><span style="font-size:9pt;line-height:1.5;">#!/bin/bash</span></p> <p align="left" style="list-style:none;margin:0px;padding:0px;color:#666666;font-family:'돋움', dotum, Helvetica, sans-serif;line-height:16.799999237060547px;"><span style="font-size:9pt;line-height:1.5;"><br></span></p> <p align="left" style="list-style:none;margin:0px;padding:0px;color:#666666;font-family:'돋움', dotum, Helvetica, sans-serif;line-height:16.799999237060547px;"><span style="font-size:9pt;line-height:1.5;">read -p "Enter a username > " user_name</span></p> <p align="left" style="list-style:none;margin:0px;padding:0px;color:#666666;font-family:'돋움', dotum, Helvetica, sans-serif;line-height:16.799999237060547px;"><br></p> <p align="left" style="list-style:none;margin:0px;padding:0px;color:#666666;font-family:'돋움', dotum, Helvetica, sans-serif;line-height:16.799999237060547px;">file_info=$(grep "^$user_name:" $FILE)</p> <p align="left" style="list-style:none;margin:0px;padding:0px;color:#666666;font-family:'돋움', dotum, Helvetica, sans-serif;line-height:16.799999237060547px;"><br></p> <p align="left" style="list-style:none;margin:0px;padding:0px;color:#666666;font-family:'돋움', dotum, Helvetica, sans-serif;line-height:16.799999237060547px;">echo "$file_info"</p> <p align="left" style="list-style:none;margin:0px;padding:0px;color:#666666;font-family:'돋움', dotum, Helvetica, sans-serif;line-height:16.799999237060547px;"><br></p> <p align="left" style="list-style:none;margin:0px;padding:0px;color:#666666;font-family:'돋움', dotum, Helvetica, sans-serif;line-height:16.799999237060547px;">if [ -n "$file_info" ]; then</p> <p align="left" style="list-style:none;margin:0px;padding:0px;color:#666666;font-family:'돋움', dotum, Helvetica, sans-serif;line-height:16.799999237060547px;"> <font color="#ff0000"><b>IFS=':' read user pw uid gid name home shell</b></font> <<< "$file_info"</p> <p align="left" style="list-style:none;margin:0px;padding:0px;color:#666666;font-family:'돋움', dotum, Helvetica, sans-serif;line-height:16.799999237060547px;"> echo "User = $user"</p> <p align="left" style="list-style:none;margin:0px;padding:0px;color:#666666;font-family:'돋움', dotum, Helvetica, sans-serif;line-height:16.799999237060547px;"> echo "UID = $uid"</p> <p align="left" style="list-style:none;margin:0px;padding:0px;color:#666666;font-family:'돋움', dotum, Helvetica, sans-serif;line-height:16.799999237060547px;"> echo "GID = $gid"</p> <p align="left" style="list-style:none;margin:0px;padding:0px;color:#666666;font-family:'돋움', dotum, Helvetica, sans-serif;line-height:16.799999237060547px;"> echo "Full Name = $name"</p> <p align="left" style="list-style:none;margin:0px;padding:0px;color:#666666;font-family:'돋움', dotum, Helvetica, sans-serif;line-height:16.799999237060547px;"> echo "Home Dir = $home"</p> <p align="left" style="list-style:none;margin:0px;padding:0px;color:#666666;font-family:'돋움', dotum, Helvetica, sans-serif;line-height:16.799999237060547px;"> echo "Shell = $shell"</p> <p align="left" style="list-style:none;margin:0px;padding:0px;color:#666666;font-family:'돋움', dotum, Helvetica, sans-serif;line-height:16.799999237060547px;">else</p> <p align="left" style="list-style:none;margin:0px;padding:0px;color:#666666;font-family:'돋움', dotum, Helvetica, sans-serif;line-height:16.799999237060547px;"> echo "No such user $user_name" >&2</p> <p align="left" style="list-style:none;margin:0px;padding:0px;color:#666666;font-family:'돋움', dotum, Helvetica, sans-serif;line-height:16.799999237060547px;"> exit 1</p> <p align="left" style="list-style:none;margin:0px;padding:0px;color:#666666;font-family:'돋움', dotum, Helvetica, sans-serif;line-height:16.799999237060547px;">fi</p> <p align="left" style="list-style:none;margin:0px;padding:0px;color:#666666;font-family:'돋움', dotum, Helvetica, sans-serif;line-height:16.799999237060547px;"><br></p> <p align="left" style="list-style:none;margin:0px;padding:0px;color:#666666;font-family:'돋움', dotum, Helvetica, sans-serif;line-height:16.799999237060547px;">쉘프로그래밍 책을 보던 중에 의아한게 있어서 질문드립니다.</p> <p align="left" style="list-style:none;margin:0px;padding:0px;color:#666666;font-family:'돋움', dotum, Helvetica, sans-serif;line-height:16.799999237060547px;">위의 코드에서 빨갛게 표시된 곳이 약간 의문인 부분인데요. 책에서는 명령어가 나오기전에 쉘에서 변수를 선언해주는 걸 허용하고 또 그 변수는 해당 명령어에서만 사용되는 환경이 된다고 하는데, 사실 이건 이해가 가는데요. IFS변수가 구분자를 나타내기때문에 passwd 파일로부터 읽어온 문자열을 :를 기준으로 나눠서 각각 다른 변수에 입력하는것도 이해가 갑니다만. 제가 궁금한건 왜 이러한 형태의 선언이 echo명령어를 포함해서는 제대로 적용되지 않는가입니다.</p> <p align="left" style="list-style:none;margin:0px;padding:0px;color:#666666;font-family:'돋움', dotum, Helvetica, sans-serif;line-height:16.799999237060547px;">예를들어서 현재 접속중인 쉘에서 FOO라는 변수가 선언되어있지않다면,</p> <p align="left" style="list-style:none;margin:0px;padding:0px;color:#666666;font-family:'돋움', dotum, Helvetica, sans-serif;line-height:16.799999237060547px;">FOO='foo' echo $FOO를 타이핑하면 foo가 출력되어야 할거같은데, 그냥 빈칸이 출력됩니다.</p> <p align="left" style="list-style:none;margin:0px;padding:0px;color:#666666;font-family:'돋움', dotum, Helvetica, sans-serif;line-height:16.799999237060547px;">그래서 read에만 적용이 되는 건가 했더니 그것 또한 아닌것이, FOO='foo' printenv | grep FOO를 타이핑하면 원하는대로 출력이 나옵니다.</p> <p align="left" style="list-style:none;margin:0px;padding:0px;color:#666666;font-family:'돋움', dotum, Helvetica, sans-serif;line-height:16.799999237060547px;">어째서 echo만 똑같은 구문이 제맘처럼 안나오는것인지 궁금합니다. 고수님들 도와주세요 ㅠㅠ</p> <div><br></div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.