同じパラメータを使用して条件付きで別のコマンドを実行する方法

同じパラメータを使用して条件付きで別のコマンドを実行する方法

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" 

関連情報