Bash 脚本重复代码
Bash Script repetitive codes
我有一个 bash 脚本。 MongoDB 查询正在运行,但这些脚本应该可以在不进行身份验证和进行身份验证的情况下运行。所以它将 运行 在不同的 MongoDB 上。有很多代码重复。您对此有何建议?或者这是最好的方法?
示例:
mongo $MONGODB_IP/db1 --quiet --host $MONGO_IP --username $MONGO_USER --password $MONGO_PASS --eval 'queries'
mongo $MONGODB_IP/db1 --quiet --eval 'queries'
您可以将特定参数传递给函数,并在函数中保留常用参数,而不是重复常用参数:
#!/usr/bin/env bash
run_mongo() {
mongo "$MONGODB_IP/db1" "$@" --quiet --eval 'queries'
}
#mongo "$MONGODB_IP/db1" --quiet --host "$MONGO_IP" --username "$MONGO_USER" --password "$MONGO_PASS" --eval 'queries'
run_mongo --host "$MONGO_IP" --username "$MONGO_USER" --password "$MONGO_PASS"
#mongo "$MONGODB_IP/db1" --quiet --eval 'queries'
run_mongo
或者您可以将常用参数存储在数组中:
#!/usr/bin/env bash
mongo_common_args=(
"$MONGODB_IP/db1" --quiet --eval 'queries'
)
#mongo "$MONGODB_IP/db1" --quiet --host "$MONGO_IP" --username "$MONGO_USER" --password "$MONGO_PASS" --eval 'queries'
mongo --host "$MONGO_IP" --username "$MONGO_USER" --password "$MONGO_PASS" "${mongo_common_args[@]}"
#mongo "$MONGODB_IP/db1" --quiet --eval 'queries'
mongo "${mongo_common_args[@]}"
我有一个 bash 脚本。 MongoDB 查询正在运行,但这些脚本应该可以在不进行身份验证和进行身份验证的情况下运行。所以它将 运行 在不同的 MongoDB 上。有很多代码重复。您对此有何建议?或者这是最好的方法?
示例:
mongo $MONGODB_IP/db1 --quiet --host $MONGO_IP --username $MONGO_USER --password $MONGO_PASS --eval 'queries'
mongo $MONGODB_IP/db1 --quiet --eval 'queries'
您可以将特定参数传递给函数,并在函数中保留常用参数,而不是重复常用参数:
#!/usr/bin/env bash
run_mongo() {
mongo "$MONGODB_IP/db1" "$@" --quiet --eval 'queries'
}
#mongo "$MONGODB_IP/db1" --quiet --host "$MONGO_IP" --username "$MONGO_USER" --password "$MONGO_PASS" --eval 'queries'
run_mongo --host "$MONGO_IP" --username "$MONGO_USER" --password "$MONGO_PASS"
#mongo "$MONGODB_IP/db1" --quiet --eval 'queries'
run_mongo
或者您可以将常用参数存储在数组中:
#!/usr/bin/env bash
mongo_common_args=(
"$MONGODB_IP/db1" --quiet --eval 'queries'
)
#mongo "$MONGODB_IP/db1" --quiet --host "$MONGO_IP" --username "$MONGO_USER" --password "$MONGO_PASS" --eval 'queries'
mongo --host "$MONGO_IP" --username "$MONGO_USER" --password "$MONGO_PASS" "${mongo_common_args[@]}"
#mongo "$MONGODB_IP/db1" --quiet --eval 'queries'
mongo "${mongo_common_args[@]}"