2011-09-12 5 views
0

이 스크립트가 실제로 실행되는지 궁금해서 다른 사람이 elses 스크립트의 예제를 따라 모델링했습니다. 내 큰 걱정은쉘 스크립트 질문

  • 스크립트가 실행될 때 변수가 포함되어 있습니까?
  • case 문에서 echo/mv/& 닫기가 올바르게 작동합니까?

코드는 앞서

#! /bin/sh #save as ads.sh #run command: chmod +x ads.sh #usage ./ads.sh {on|off} #stop framework #/etc/init.d/framework stop #create backup dir if needed mkdir -p /var/local/adunits.bkp #if ads.sh on case "$1" in on) #move, touch, exit echo "Turning Ad support on..." mv /var/local/adunits/* /var/local/adunits.bkp ;; #if ads.sh off off) #remove tmp echo "Ads turned off..." mv /var/local/adunits.bkp/* /var/local/adunits ;; #else *) echo "Usage: ./ads.sh {on|off}" exit 1 ;; esac #restart framwork #/etc/init.d/framework start #bye exit 0 

감사를

업데이트!

+2

실행 여부를 확인하는 가장 좋은 방법은 실행하는 것입니다. –

+0

유감스럽게도 나는 그것을 실행할 장치가 없다. – ehime

+0

[codereview.stackexchange.com] (http://codereview.stackexchange.com)에 속한 –

답변

0

mv 명령은 아마도 dodgy로 보입니다. mv 맨 페이지에서 :

mv [-f | -i | -n] [-v] source target 
mv [-f | -i | -n] [-v] source ... directory 

마지막 인수는 대상 파일 또는 디렉토리 여야합니다.

그래서 같은 것들 :

mv /src_dir/* /target_dir/* 

/target_dir의 '마지막'파일을 덮어 쓸 가능성이 - 당신이 원하는 아마 아니다.

mv /src_dir/* /target_dir 

입니다.

0

스크립트를 실행할 때 변수가 포함되어 있습니까?

어떤 변수를 언급하고 있습니까?

case 문에서 echo/mv/& 닫기가 올바르게 작동합니까?

mv 명령은 사용자가 원하는대로 처리하지 못합니다. 일반적으로 소스 및 대상 인수 모두에서 와일드 카드 (*)를 mv으로 사용할 수 없습니다. 자세한 내용은 man mv을 참조하십시오. 와일드 카드는 셸에 의해 확장되고, mv이 아니라는 것을 기억하십시오. mv 명령 자체는 인수 목록 만 볼 수 있으며 두 번째 인수에 *이 있음을 알 수있는 방법이 없습니다.

+0

변수는 ala ./ads.sh 또는에 포함되어 있습니다. ./ads.sh를 벗어나서 두 번째 와일드 카드를 보지 못했습니다! – ehime