동일한 매개변수를 사용하여 조건부로 다른 명령을 실행하는 방법

동일한 매개변수를 사용하여 조건부로 다른 명령을 실행하는 방법

gtar가 정의된 경우 tar 대신 gtar를 사용하고 싶습니다.

if command -v gtar; then
  gtar --exclude-ignore='.deployignore' -cf /dev/stdout . | aws s3 cp - "$arti_fact"
else
  tar --exclude-ignore='.deployignore' -cf /dev/stdout . | aws s3 cp - "$arti_fact"
fi

그러나 DRY에 관한 한 그것은 죄악입니다. 동일한 매개변수를 사용하여 조건부로 다른 명령을 실행하는 방법이 있습니까?

답변1

사용하려는 명령을 변수에 저장할 수 있습니다.

tar=tar
if command -v gtar; then tar=gtar; fi
"$tar" --exclude-ignore='.deployignore' -cf /dev/stdout . | aws s3 cp - "$arti_fact" 

관련 정보