Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将包含空格的shell变量作为参数传递_Python_Python 3.x_Shell_Gflags - Fatal编程技术网

Python 将包含空格的shell变量作为参数传递

Python 将包含空格的shell变量作为参数传递,python,python-3.x,shell,gflags,Python,Python 3.x,Shell,Gflags,我在变量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 $DATA

我在变量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\u脚本而不是$RUN\u脚本,因为SCRIPT\u DIR包含空格,但我不能对$hps\u数据集执行相同的操作

hps_dataset="--dataset_config \"$DATASET_CONFIG\" --dataset_worker_num 16"

此外,对于bash中的未来变量,所有caps都与HPS_数据集类似。

您需要使用数组来存储数据集。我还建议您停止使用ALLCAPS变量名:

使用此处显示的所有引号


因为我们使用的是数组,所以不能使用/bin/sh来运行脚本。您必须显式地使用bash或ksh,或者zsh,这不会有帮助:文字引号不会阻止分词
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[@]}"