我一直在尝试将以下内容放入 bash 脚本中:
scp /cygdrive/c/Program\ Files\ \(x86\)/Spiceworks/data/configurations/LA_$(date +%F)-firewall-5520 "sf-mlawler@10.21.1.212:/home/sf-mlawler/SBOX_Automation/SBOX_Dumps/08\ -\ Security/Firewalls"
...通过命令行按预期工作。
当我尝试将它放在脚本中时,我显然将不得不双重转义空格,还有什么?我尝试过的多种变体都无法成功。
我会认为:
scp /cygdrive/c/Program\\ Files\\ \(x86\)/Spiceworks/data/configurations/LA_\$(date\ +%F)-firewall-5520 "sf-mlawler@10.21.1.212:/home/sf-mlawler/SBOX_Automation/SBOX_Dumps/08\\ \\-\\ Security/Firewalls"
......会工作,但它没有。有什么建议,在我变灰秃之前?谢谢
我不会用我尝试过的所有变体来浪费空间,但我会说我已经尝试过逃避几乎所有的东西,基本上什么都没有,中间还有很多都没有成功。当我收到“没有这样的文件或目录”时,我显然会逃避,直到文件实际解析,但即使我没有收到路径错误,命令也没有成功完成。
我确实理解这是一个非常具体的案例,但我想它会在未来对其他人有所帮助:在 bash 脚本中转义空格,使用嵌入式expect
(我已经使用#!/bin/bash
shebang 和嵌入式进行了测试,expect using expect -c ' .... '
以及#!/usr/bin/expect
使用没有的简单spawn scp
命令改变。
编辑(基于回复):
我应该提到我已经尝试引用它......
引用第一(主机)部分给了我错误
无法读取“(日期+%F)”:执行时没有这样的变量
"spawn scp "/cygdrive/c/Program Files (x86)/Spiceworks/data/configurations/LA_$(date +%F)-firewall-5520" "sf-mlawler@10.21.1.212:/home/sf-mlawler/SBOX_..."
...它不是一个变量,它是一个函数,它以格式为我提供当前日期year-month-day
引用目标部分而不转义任何内容会给我错误
scp: ambiguous target