如何有条件地运行具有相同参数的不同命令

如何有条件地运行具有相同参数的不同命令

如果定义了 gtar 我想使用它而不是 tar:

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" 

相关内容