Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.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
在Bash-EOD中为Expect保留反斜杠转义单引号_Bash - Fatal编程技术网

在Bash-EOD中为Expect保留反斜杠转义单引号

在Bash-EOD中为Expect保留反斜杠转义单引号,bash,Bash,我一直在努力寻找一个能帮助我解决这个问题的答案,但我不知道如何向expect语句发送反斜杠。下面是我的代码。当它试图执行ssh语句时,它在我需要的单引号之前从来没有反斜杠 #!/bin/bash CLUSTER_NAME=examplecluster SAMPLE_N=100 REP_N=1 declare -a sparr=('Wilson'"\'"'s_Warbler') for sp in "${sparr[@]}" do RUN_NAME=${sp}_${SAMPLE_N}_${RE

我一直在努力寻找一个能帮助我解决这个问题的答案,但我不知道如何向expect语句发送反斜杠。下面是我的代码。当它试图执行ssh语句时,它在我需要的单引号之前从来没有反斜杠

#!/bin/bash
CLUSTER_NAME=examplecluster
SAMPLE_N=100
REP_N=1

declare -a sparr=('Wilson'"\'"'s_Warbler')

for sp in "${sparr[@]}"
do
RUN_NAME=${sp}_${SAMPLE_N}_${REP_N}
cd /home/shared/stemhwf/stem_hwf/runs/${RUN_NAME}/data

/usr/bin/expect <<EOD
set timeout -1
spawn ssh hdiuser@${CLUSTER_NAME}-ssh.azurehdinsight.net "mkdir -p /home/hdiuser/${RUN_NAME}"
expect password: { send "XXXXXXXX"; exp_continue }
EOD
done

如何在ssh expect语句中保留反斜杠?

声明数组时,在单引号前添加三个斜杠:

declare-a sparr=(“威尔逊的莺”)

还要在目标路径周围加上转义双引号,以便:

spawn ssh hdiuser@${CLUSTER_NAME}-ssh.azurehdinsight.net "mkdir -p \"/home/hdiuser/${RUN_NAME}\""

我知道包含反斜杠是有效的,因为我已经从命令行手动测试了它<代码>sshhdiuser@examplecluster-ssh.azurehdinsight.net“mkdir-p/home/hdiuser/Wilson's_Warbler_100_1”
spawn ssh hdiuser@${CLUSTER_NAME}-ssh.azurehdinsight.net "mkdir -p \"/home/hdiuser/${RUN_NAME}\""