cgi 로 쓸 쉘 프로그래밍에서 echo 사용법 질문입니다.

bily의 이미지

보드에 보아 웹서버를 돌린 후 cgi로 쓸 쉘 프로그래밍 중입니다.

a.cgi를 echo $(printenv) 라고 한 후에 웹에서 접속하면

실제로 화면에 printenv가 실행된 화면이 익스플로러에 뿌려집니다.

그런데, $(iptables -L) 처럼 옵션이 있는 명령어를 수행 하려고 하니

전혀 안먹힙니다.

변수를 만들어서, 예를 들어

a="iptables -L" 이라든지 .. alias 를 이용해 하는등..여러가지를 시도 해 봤지만

전혀 안먹습니다.

$(..) 내에 들어 가는 부분은 한단어의 명령어만 되나요?

ls도 -l 옵션을 써서 ls -l 로 쓰고 싶다면

어떻게 해야 하는지요??

7339989b62a014c4ce6e31b3540bc7b5f06455024f22753f6235c935e8e5의 이미지

왜 굳이 그렇게 해야 하죠? 그냥 echo를 통과할 필요 없이 iptables -L만 넣으면 될 것 같은데요.

bily의 이미지

그냥 echo $(명령어) 로 쓰지 않으니, 아무런 반응이 없습니다.

몇 시간을 투자해서 하다 보니 echo $(명령어) 형식으로 쓸떄만

명령어를 수행해서 결과를 화면에 뿌려 주는걸 알아냈습니다.

ㅠㅠ

ironiris의 이미지

말씀하시는 것을 보니 헤더를 보내주는 작업을 안하신 것 같네요.

echo Content-type: text/plain
ehco
 
echo "보낼 내용"

이렇게 하시면 됩니다.
printenv는 자동으로 해더를 생성해서 보내줬을것 같다는 생각이 드는군요.