단순한 배치 잡들은 분리된 작업에 일반적이지만 반복, 테스트, 변수들은 사용자에게 훨씬 더 나은 유연성을 제공한다. JPEG 그림을 PNG로 변환하는 Bash(유닉스 셸의 하나) 스크립트는 다음과 같다.
#!/bin/bashforjpg;do# use $jpg in place of each filename given, in turnpng="${jpg%.jpg}.png"# construct the PNG version of the filename by replacing .jpg with .pngechoconverting"$jpg"...# output status info to the user running the scriptifconvert"$jpg"jpg.to.png;then# use the convert program (common in Linux) to create the PNG in a temp filemvjpg.to.png"$png"# if it worked, rename the temporary PNG image to the correct nameelse# ...otherwise complain and exit from the scriptecho'jpg2png: error: failed output saved in "jpg.to.png".'>&2exit1fi# the end of the "if" test constructdone# the end of the "for" loopechoallconversionssuccessful# tell the user the good newsexit0
셸 스크립트를 기록하는 것은 다른 프로그래밍 언어의 같은 코드로 쓰인 것보다 훨씬 더 빠른 경우가 많다. 다른 해석 언어에 비해, 셸 스크립트는 컴파일 단계가 없기 때문에 스크립트는 디버깅을 하는 동안 빠르게 실행할 수 있다.
단점
셸 스크립트를 사용함으로써 몇 가지 중대한 단점이 존재한다.
한 가지 단점으로는 실행되는 각 명령에 대한 잠재적으로 새로운 하부 프로세스의 수많은 필요에 따라 속도가 느려질 수 있다.
단순 sh 스크립트는 다양한 종류의 유닉스, 리눅스, BSD 운영 체제, therof 버전, 시스템 유틸리티와 잘 호환된다는 장점이 있지만 더 복잡한 셸 스크립트는 셸, 유틸리티, 다른 필수 요소 간의 약간의 차이가 많은 경우 실패할 가능성이 있다. 래리 월은 다음과 같은 유명한 말을 남겼다: "셸 스크립트보다 셸을 포팅하는 게 더 쉽다"
이와 비슷하게, 더 많은 복잡한 스크립트들은 셸 스크립트 언어 자체의 제한 안에서 실행할 수 있다. 이러한 제한 때문에 다양한 셸이 문제를 개선할 목적으로 고품질의 코드와 확장을 기록하기 힘들 수 있다.