스크립트에 일부 시험 실행 옵션 추가

스크립트에 일부 시험 실행 옵션 추가

매개변수를 허용하고 설정되지 않은 경우 기본값을 사용하는 스크립트가 있습니다.

VALUE=$1
if [[ -z "$VALUE" ]];  
   VALUE=foo #some function returns the default  
fi  

그런 다음 스크립트는 계속해서 작업을 수행합니다.
나는 그것을 "강화"하고 몇 가지 옵션을 제공하고 싶습니다 dry run. 따라서 통과하면 다음과 같은 결과를 얻게 됩니다.

if [[ -z "$DRY" ]];  
  echo "command x y z"  
else 
  command "x" "y" "z"  
fi  

어떻게 해야 하나요?

답변1

적절한 명령줄 구문 분석을 수행한 다음 실제 연습 실행 방법을 선택합니다.

명령줄 구문 분석:

#!/bin/sh

dry_run=false

while getopts 'n' opt; do
    case "$opt" in
        n) dry_run=true ;;
        *) echo 'error in command line parsing' >&2
           exit 1
    esac
done

이제 사용자가 명령줄 옵션을 사용하여 스크립트를 호출하는 $dry_run경우입니다 .true-n

그런 다음 연습 실행을 수행하는 방법을 선택합니다. 간단한 방법은 사용 set -v(셸에서 읽은 명령 표시)한 다음 사용 set -n(실제로 실행하지 않고) 하는 것입니다.아무것):

if "$dry_run"; then
    set -v
    set -n
fi

그러나 이는 스크립트만 표시하므로 원하는 것이 아닐 수도 있습니다.

대신 다음을 선택할 수 있습니다.

if "$dry_run"; then
    cmd=echo
else
    cmd=''
fi

그런 다음 테스트 실행하려는 특정 명령 앞에 다음을 붙입니다 $cmd.

$cmd ls -l
$cmd echo "hello world"

관련 정보