将条件 SORT 变量添加到 mongoexport

Add a conditional SORT variable to mongoexport

我正在尝试在 mongoexport 中设置条件 --sort 选项,但我在变量的字符串解释方面遇到了问题。 这是我正在尝试的代码 运行 :

#!/bin/bash
if [[ $IS_PROD == "true" ]]
then
   SORT='--sort "{_id : -1}"'
else
   SORT=""
fi

$MONGODB_HOME/bin/mongoexport \
--host=$HOST \
--port=$PORT \
--username=$USER \
--password=$PWD \
--db=$DB \
--limit=$LIMIT \
$SORT \
--collection=my_collection  | \
sed 's,\,\\,g' \
> $TMP_FILE

虽然 运行我收到以下错误 error parsing command line options: invalid argument for flag '--sort' (expected string): invalid syntax

我已经尝试了几种引号配置,但仍然无法正常工作。有人可以帮我解决这个问题吗?

谢谢

使用 bash 数组

#!/bin/bash
if [[ $IS_PROD == "true" ]]
then
    SORT=(--sort "{_id : -1}")
else
    SORT=()
fi

$MONGODB_HOME/bin/mongoexport \
--host=$HOST \
--port=$PORT \
--username=$USER \
--password=$PWD \
--db=$DB \
--limit=$LIMIT \
"${SORT[@]}" \
--collection=my_collection  | \
sed 's,\,\\,g' \
> $TMP_FILE

解释:使用单引号防止shell展开,双引号是文字,但在变量展开后双引号仍然是文字,展开后的字符串被空格分隔。

否则解决未绑定变量错误

#!/bin/bash

options=(--host=$HOST \
--port=$PORT \
--username=$USER \
--password=$PWD \
--db=$DB \
--limit=$LIMIT)
if [[ $IS_PROD == "true" ]]
then
    options+=(--sort "{_id : -1}")
fi

$MONGODB_HOME/bin/mongoexport \    
"${options[@]}" \
--collection=my_collection  | \
sed 's,\,\\,g' \
> $TMP_FILE