쉘 스크립트 도와주세요!!
글쓴이: Gwondori / 작성시간: 수, 2015/07/29 - 11:24오전
먼저 쉘 스크립트를 보여드리겠습니다. (bash가 아니며 그냥 sh 입니다.)
#!/bin/sh
exec_grep() {
# 시행할 명령을 파일로 저장(첫번 째 줄)
echo $1 >> /tmp/results.dat
# 명령 시행 후 결과는 파일로 저장...(두번 째 줄 부터...)
$1 >> /tmp/results.dat 2>&1
}
rm -f /tmp/results.dat
exec_grep "grep \"wlan0: 0010\" /proc/net/wireless"
#결과 출력
more /tmp/results.dat
#end shell
여기까지가 제가 작성한 쉘 스크립트인데...
문제점은 쉘 스크립트에 그냥 grep "wlan0: 0010" /proc/net/wireless 를 실행하도록 하면 잘됩니다만(당연하겠지만요ㅠ),
작성한 쉘 스크립트로 이를 실행토록 하니 원하는 결과가 나오지 않았습니다.
제 생각으론 grep의 첫번 째 인자에 공백이 있어 제대로 동작하지 않은 것 같으며...
이를 중점으로 두어 제가 가진 지식 내에서 별 방법을 썻는데도 안되네요 ㅠㅠ
그리고 파일에는 꼭 써야합니다.
Forums:
역슬래쉬까지 같이 실행되서 그렇겠네요. 작성하신
역슬래쉬까지 같이 실행되서 그렇겠네요.
작성하신 코드에 수정을 최소화 하자면..
1) exec_grep "grep \"wlan0: 0010\" /proc/net/wireless" ==> exec_grep "grep" "wlan0: 0010" "/proc/net/wireless"
2) $1 ==> "$@"
위 두개 바꿔주면 될거에요
1은 함수 인자를 3개로 넘겨주는 구문이고
2는 각 인자에 쌍따옴표를 붙여주는 구문입니다.
소곤소곤
감사합니다ㅎㅎ;;; 그런데...
오후 1시 반쯤에 해결했는데 미처 해결했다는 글을 안썻네요... 죄송합니다.
당시 해결한 방법으론 함수(exec_grep) 안으로부터 두번째 라인의 변수 $1 앞에 eval을 써서 해결하였습니다.
혹여나 저와같은 문제를 가지신 분을 위해 올립니다ㅎ
댓글 달기