2011-03-01 6 views
1

최근 학교에서 배쉬 스크립팅 언어로 작은 프로그램을 작성하는 과제를 받았습니다.쉘 스크립트 내에서 쉘 스크립트를 실행 중 - 좋거나 나쁘다.

이 셸 스크립트는 명령 줄에서 위치 매개 변수 또는 인수를 받아들입니다.

이제는 if-else 문을 사용하여 인수가 있는지 확인하고 인수가 있으면 스크립트가 수행 할 작업을 수행하지만 인수가없는 경우 - 오류를 표시합니다 메시지를 표시하고 사용자에게 인수를 입력하고 같은 쉘 스크립트에 다시 인수를 전달하라는 메시지가 표시됩니다 ...

이제 Bash 프로그래밍 패러다임에서이 접근 방식이 좋은지 또는 나쁜지 알고 싶습니다. 나는 이것이 열린 상태로 유지되거나 끝나지 않고 계속해서 메모리를 소비하는 백그라운드에서 너무 많은 작업을 수행 할 수도 있다는 것에 다소 의구심을 품고 있습니다 ... 도와주세요.

여기 작은 조각 (script1.bash로 스크립트 이름을 가정)입니다 :

#!/bin/bash 

if [ $# -gt 0 ]; then 
     read -p "Please enter your name: " name 
     script1.bash $name 
elif [ $# -eq 1 ]; then 
     echo "Your name is $1!" 
fi 
+1

학교 과제 인 경우 숙제 태그를 포함해야합니다. – BMitch

+0

@B Mitch - 다음 번부터 처리 할 것입니다 .. –

+0

쉘 스크립트가 쉘 스크립트 내에서 실행됩니까? 그것은 가증 한 일입니다. – mob

답변

4

그건 ... 의심 :-)

주요 문제는 서브 쉘을 산란하고 있다는 것입니다 누군가가 그들의 이름을 입력하는 것을 거부 할 때마다.

당신은 같은과의 더 나은 것 :

서브 쉘을 생성합니다하지
#!/bin/bash 
name=$1 
while [[ -z "$name" ]] ; do 
    read -p "Please enter your name: " name 
done 
echo "Your name is $name!" 

있다.

+0

감사합니다 paxdiablo, 내가 becnhmarking 가기 명령을 사용하여 일을했는데, 아무것도 나타나지 않는 ... 그냥 궁금 ??? –

+0

재귀 호출을하기 위해'exec'를 사용하면 그의 원래 코드가 작동할까요? –

+0

글쎄, 그의 원래 코드는 Enter 키를 누르지 않는 한'elif' 비트에'$ name'보다는'$ 1'이되어야한다는 사실 외에도 _as-is_를 사용합니다. 'exec'는 그 일이 멈추지 않게 할 것입니다. 내 대답은 필요한 것만을 수행하는 선상에 있었다. 'while' 루프를 채울 수있을 때 또 다른 프로세스를 시작하거나 (현재 프로세스의 내용을'exec'로 바꾸는 것조차도) 요점이 없습니다. – paxdiablo