使用带有空格的字符串数组作为参数调用 bash 脚本

使用带有空格的字符串数组作为参数调用 bash 脚本

我对 bash 还很陌生。我想调用位于远程 Linux 机器上的脚本,传递一些常规参数和一个数组。该数组包含可能带有空格的字符串元素。

我写了一个最小的例子:

在服务器端:copyFiles.sh

#!/bin/bash

msg=$1  
msg2=$2
shift           
shift
arr=("$@") # Rebuild the array with rest of arguments
for ((i = 0; i < ${#arr[@]}; i++))
do
    echo $msg $msg2 "${arr[$i]}"
done

在主机端:

first="first"
second="second"
array=("arra y1" "array2" "array3")

plink -ssh username@hostname -pw mypwd -batch  " bash scripts/copyFiles.sh $first $second "${array[@]}" "

输出:

first second arra
first second y1
first second array2
first second array3

我想要的是:

first second arra y1
first second array2
first second array3

谢谢

答案1

我认为您只需要使用\"空格分隔的参数。您是否尝试过按以下方式转义带有空格的字符串:

"\"数组 y1\""

我认为它可能会解决你的问题。

相关内容