将条件 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
我正在尝试在 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