diff --git a/scripts/larvatagger.sh b/scripts/larvatagger.sh
index 41911c2f99fbf970a759541c5ac7e315b040546e..1fa78bcf2e55189fe2bd72013f105821493769d8 100755
--- a/scripts/larvatagger.sh
+++ b/scripts/larvatagger.sh
@@ -71,7 +71,7 @@ fi
 parentdir=$(cd "$(dirname "$1")"; pwd -P)
 file=$(basename "$1"); shift
 
-RUN_ARGS="$RUN_ARGS -v $parentdir:/data"
+RUN_ARGS="$RUN_ARGS -v \"$parentdir\":/data"
 
 # undocumented feature
 backend=MaggotUBA
@@ -82,10 +82,10 @@ echo "realpath: command not found"
 echo "on macOS: brew install coreutils"
 exit 1
 fi
-RUN_ARGS="$RUN_ARGS --mount type=bind,src=$(realpath $instance),dst=/app/$backend/models/$(basename $instance)"
+RUN_ARGS="$RUN_ARGS --mount type=bind,src=\"$(realpath $instance)\",dst=/app/$backend/models/$(basename $instance)"
 done
 
-exec docker run $RUN_ARGS -i $DOCKER_ARGS "$LARVATAGGER_IMAGE" open "/data/$file" $TAGGER_ARGS $@
+eval "exec docker run $RUN_ARGS -i $DOCKER_ARGS \"$LARVATAGGER_IMAGE\" open \"/data/$file\" $TAGGER_ARGS $@"
 ;;
 
 	import | merge)
@@ -93,9 +93,9 @@ exec docker run $RUN_ARGS -i $DOCKER_ARGS "$LARVATAGGER_IMAGE" open "/data/$file
 parentdir=$(cd "$(dirname "$1")"; pwd -P)
 file=$(basename "$1"); shift
 
-RUN_ARGS="$RUN_ARGS -v $parentdir:/data"
+RUN_ARGS="$RUN_ARGS -v \"$parentdir\":/data"
 
-docker run $RUN_ARGS "$LARVATAGGER_IMAGE" $cmd "/data/$file" $@
+eval "docker run $RUN_ARGS \"$LARVATAGGER_IMAGE\" $cmd \"/data/$file\" $@"
 ;;
 
 	train)
@@ -103,7 +103,7 @@ docker run $RUN_ARGS "$LARVATAGGER_IMAGE" $cmd "/data/$file" $@
 parentdir=$(cd "$(dirname "$1")"; pwd -P)
 data_repository=$(basename "$1"); shift
 
-RUN_ARGS="$RUN_ARGS -v $parentdir:/data"
+RUN_ARGS="$RUN_ARGS -v \"$parentdir\":/data"
 
 tagger=$1; shift
 
@@ -132,12 +132,12 @@ done
 if [ -n "$external_models_dir" ]; then
 mkdir -p "$external_models_dir"
 src=$(cd "$external_models_dir"; pwd -P)
-RUN_ARGS="$RUN_ARGS --mount type=bind,src=$src,dst=/app/$backend/models"
+RUN_ARGS="$RUN_ARGS --mount type=bind,src=\"$src\",dst=/app/$backend/models"
 fi
 
-echo "docker run $RUN_ARGS \"$LARVATAGGER_IMAGE\" train \"/app/$backend\" \"/data/$data_repository\" \"$tagger\" $@"
-
-docker run $RUN_ARGS "$LARVATAGGER_IMAGE" train "/app/$backend" "/data/$data_repository" "$tagger" $@
+DOCKER_RUN="docker run $RUN_ARGS \"$LARVATAGGER_IMAGE\" train \"/app/$backend\" \"/data/$data_repository\" \"$tagger\" $@"
+echo $DOCKER_RUN
+eval $DOCKER_RUN
 ;;
 
 	predict)
@@ -145,7 +145,7 @@ docker run $RUN_ARGS "$LARVATAGGER_IMAGE" train "/app/$backend" "/data/$data_rep
 parentdir=$(cd "$(dirname "$1")"; pwd -P)
 data_file=$(basename "$1"); shift
 
-RUN_ARGS="$RUN_ARGS -v $parentdir:/data"
+RUN_ARGS="$RUN_ARGS -v \"$parentdir\":/data"
 
 backend=MaggotUBA
 tagger="20230311"
@@ -182,12 +182,12 @@ echo "realpath: command not found"
 echo "on macOS: brew install coreutils"
 exit 1
 fi
-RUN_ARGS="$RUN_ARGS --mount type=bind,src=$(realpath $tagger_path),dst=/app/$backend/models/$tagger"
+RUN_ARGS="$RUN_ARGS --mount type=bind,src=\"$(realpath $tagger_path)\",dst=/app/$backend/models/$tagger"
 fi
 
-echo "docker run $RUN_ARGS \"$LARVATAGGER_IMAGE\" predict \"/app/$backend\" \"$tagger\" \"/data/$data_file\" $@"
-
-docker run $RUN_ARGS "$LARVATAGGER_IMAGE" predict "/app/$backend" "$tagger" "/data/$data_file" $@
+DOCKER_RUN="docker run $RUN_ARGS \"$LARVATAGGER_IMAGE\" predict \"/app/$backend\" \"$tagger\" \"/data/$data_file\" $@"
+echo $DOCKER_RUN
+eval $DOCKER_RUN
 ;;
 
 	--more-help)