매개변수를 허용하고 설정되지 않은 경우 기본값을 사용하는 스크립트가 있습니다.
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"