2011-03-21 5 views
6

누군가 bash 쉘 스크립트를 테스트하는 방법을 설명 할 수 있습니까? 내가 그것을에서이 코드를 .sh로 파일을 가지고 예를 들어 bash 쉘 스크립트 테스트

...

#!/bin/sh 

for file in *.txt; do 
    mv "$file" "`basename $file .txt`.doc" 
done 

어떻게 그것을 위해 테스트를 작성합니까? Java에서와 마찬가지로 코드를 테스트하기 위해 assertEquals와 같은 코드를 작성하는 단위 테스트가 필요한 출력을 제공합니다.

+0

확인이 -> http://stackoverflow.com/questions/1315624/bash-and-test-driven-development, http://stackoverflow.com/questions/1339416/testing-bash-scripts – Chaitanya

+0

단위 테스트 된 bash 스크립트. 좋은. :) –

+0

'mv "$ file" "$ (basename".txt) .doc "또는'mv"$ file ""$ {file % * .txt} .doc "' –

답변

3

mv 앞에 echo을 추가하여 올바른 명령이 처음 만들어 졌는지 확인하십시오. (변경 사항을 취소 할 가능성이 어렵게 명령 항상 좋은 생각.)

일부 가능한 유용한 자원

에 대한 xUnit의 프레임 워크
+0

좋아요. , 감사. 하지만 전체 코드를 테스트하는 .sh 파일을 만들려고합니다. –

+0

@ Mr Teeth : 위 링크를 추가했습니다. 즉, 쉘 스크립트는 단위 테스트를하기가 조금 더 어렵습니다. 왜냐하면 거의 모든 것이 외부 명령을 호출하기 때문입니다. 결과적으로 이러한 명령을 테스트하고 스크립트 자체를 'echo'로 외부 수정을 스터 빙하여 테스트하는 것이 훨씬 더 유용하고 유용합니다. – geekosaur

7

Bash에서 어설 션을 수행 할 수 있습니다. 고급 Bash 스크립팅 가이드에서이 체크 아웃 :

http://tldp.org/LDP/abs/html/debugging.html#ASSERT

+1

ABS를 참고로 권장하지 마십시오. 원칙적으로 ABS가 유지 보수가되지 않아서 나쁜 습관을 보여주는 습관을 보이게됩니다. Wooledge 위키와 bash-hackers 위키 (그리고 공식 매뉴얼)는 * 많은 * 훌륭한 리소스입니다. –

-1
#!/bin/sh 
for file in *.txt; do 
    echo mv "$file" "`basename $file .txt`.doc" 
done 
2

이 밖으로 시도 : assert.sh

source "./assert.sh" 

local expected actual 
expected="Hello" 
actual="World!" 
assert_eq "$expected" "$actual" "not equivalent!" 
# => x Hello == World :: not equivalent!