Bash

如何有條件地執行具有相同參數的不同命令

  • September 26, 2019

如果定義了 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 而言,這是有罪的。有沒有辦法有條件地執行具有相同參數的不同命令?

您可以將要使用的命令儲存在變數中:

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

引用自:https://unix.stackexchange.com/questions/543752