10줄정도의 셸스크립트 질문입니다!
글쓴이: 노력하는자 / 작성시간: 화, 2016/04/12 - 4:00오후
먼저 스크립트는 다음과같습니다
#!/bin/bash # symlinks.sh: 디렉토리에 들어 있는 심볼릭 링크를 나열하기. ARGS=1 # 명령어줄 인자가 한 개 있어야 됩니다. OUTFILE=symlinks.list # 저장할 파일 if [ $# -ne "$ARGS" ] # 인자가 1개가 아니라면... then directory=`pwd` # 현재 작업 디렉토리 else directory=$1 fi echo "\"$directory\" 디렉토리의 심볼릭 링크들" for file in "$( find $directory -type l )" # -type l = 심볼릭 링크 do echo "$file" done | sort > "$OUTFILE" # 루프의 표준 출력이 # ^^^^^^^^^^^^ 저장될 파일로 재지향 됩니다. exit 0
현제디렉터리나 특정디렉터리의 심볼릭링크를 find명령으로 찾아서 symlinks.list 파일에 출력하는 스크립트인데요
여기서 2가지 질문이 있습니다!
먼저 파라미터가 전달됬는지 체크하는 if문을 다음과같이 대체할수도있다고 하더군요
directory=${1 - `pwd`}
${1 - `pwd` } 이게 무슨문법인지 모르겠습니다
마지막질문은 for문에 관한건데요
done마지막에 이런식으로 되어있습니다
done | sort > "$OUTFILE"
done다음에 sort명령이 이어지고있는데 이것도 처음보는문법이네요
어떤 문법인가요?
Forums:
directory=${1 - `pwd`} 이건
이건 출처가 어떻게 되나요? 저도 처음 보고 bash 4.2 까지는 "bad substitution" 에러가 발생하는 데요.
두번째 질문은 https://mug896.gitbooks.io/shell-script/content/compound_commands.html 을 읽어 보시면 이해가 되실 겁니다. 간단히 설명하면, for 문으로 출력 되는 내용을 sort의 STDIN 으로 전달하는 것 입니다.
참고로, 두번째 질문에 링크해 드린, 조현호(mug896)님이 작성하신 Bash 쉘 스크립트 가이드(https://kldp.org/node/154415)를 참고 하시면 도움이 될 것 같습니다. 제가 본 bash 가이드 중에서 가장 좋은 문서라고 할 수는 없지만, 추천을 하기에는 가장 좋은 문서라고 생각 됩니다. (정리가 너무 깔금하게 잘 되었습니다. 저도 요즘에는 bash man page에서 이 문서로 갈아탔습니다. ^^;)
답변감사드립니다!
일단 좋은답변과 좋은 레퍼런스 추천에 감사드립니다! 두번째 질문도 이해가 됬습니다
첫번째 질문에 제가 directory=${1 - `pwd`} 이렇게 띄어쓰기를 넣었는데 오타였습니다
이게 원래 질문하려던 변수할당 표현이었습니다
그리고 출처는
http://www.tldp.org/LDP/abs/html/loops1.html
여기의 Example 11-11. Listing the symbolic links in a directory 예제 5번째 줄에서 가져왔습니다.
첫번째 질문은 앞에 김정균님께서 말씀하신 레퍼런스
첫번째 질문은
앞에 김정균님께서 말씀하신 레퍼런스 인
https://mug896.gitbooks.io/shell-script/content/exp_and_sub/parameter_expansion.html
에서 Use a default value 부분을 보면 됩니다.
답변감사드립니다! 덕분에 이제 모두 이해했습니다!
답변감사드립니다! 덕분에 이제 모두 이해했습니다!
셸 변수를 할당할때 디폴트값을 지정할수도있군요
댓글 달기