python - 将包含空格的 shell 变量作为参数传递
问题描述
我在变量中有一个动态路径DATASET_CONFIG
这是一个演示问题的小代码
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
RUN_SCRIPT="$SCRIPT_DIR/file.py"
DATASET_CONFIG="$SCRIPT_DIR/../dataset_config/ffhq.json"
hps_dataset="--dataset_config $DATASET_CONFIG --dataset_worker_num 16"
python_version="python3"
$python_version "$RUN_SCRIPT" \
$hps_dataset \
;
如您所见,我使用"$RUN_SCRIPT"
而不是$RUN_SCRIPT
因为SCRIPT_DIR
包含空格,但我不能这样做$hps_dataset
解决方案
您需要使用数组来存储数据集。我还建议您停止使用 ALLCAPS varnames(这就是原因):
script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
run_script="$script_dir/file.py"
dataset_config="$script_dir/../dataset_config/ffhq.json"
hps_dataset=( --dataset_config "$dataset_config" --dataset_worker_num 16 )
python_version="python3"
"$python_version" "$run_script" "${hps_dataset[@]}"
使用此处显示的所有引号。
因为我们使用的是数组,所以不能使用 /bin/sh 来运行脚本。您必须明确使用 bash 或 ksh(或者可能是 zsh)
推荐阅读
- python - Flask 监控仪表板不适用于 after_request
- mysql - Mysql - 如果第三个表中有记录,则加入 2 个表
- javascript - 检查一组对象是否与另一组对象相交
- node.js - 从谷歌驱动器检索pdf的链接并将其上传到mongodb?
- python - Django - 如何为 GET 请求创建/应用序列化程序?
- google-cloud-platform - 请求谷歌云语音到文本 API 给出 503 错误?
- typescript - ramda 使用过滤器时出现打字稿错误
- reactjs - 如何在 React Hooks 中使用 ComponentWillReceieveProp
- javascript - 为什么当我尝试运行此功能时会出现 typeError?我该如何解决?
- c# - PSQL 无法为参数添加值