我试图通过在bashrc中创建SCP (安全副本)函数来简化我的生活:
scpcloud() {
CP_STR="$(whoami)@${REMOTE_HOST}:"
CP_STR+=$1
CP_STR+=" $2"
scp $CP_STR
}
理想情况下,我应该能够键入类似scpcloud ~/myfileonremote.png myfileonlocal.png
的内容。
但是,在这种用法中出现了一个问题,因为Bash扩展了特殊字符:
scpcloud ~/myfileonremote.png myfileonlocal.png
变成:
kenny@remote.host.com:/Users/kenny/myfileonremote.png myfileonlocal.png
这不是我想要的。我想要将倾斜(和任何其他的Bash字词扩展)字面上发送到远程主机。所以理想情况下,我的命令会变成:
kenny@remote.host.com:~/myfileonremote.png myfileonlocal.png
我试图通过引用下列方法来纠正这一问题:
CP_STR+='$1'
CP_STR+="$1"
都没有用。有什么解决办法可以做到这一点吗?
发布于 2019-07-30 06:36:54
不要构建一个字符串(或者至少是一个字符串),并期望分字操作能够正确地将它分解成两个参数。
scpcloud() {
scp "$(whoami)@$REMOTE_HOST:$1" "$2"
}
此外,您需要引用这个倾斜体,因为shell在scpcloud
运行之前就扩展了它。
scpcloud "~/myfileonremote.png" myfileonlocal.png
发布于 2019-07-30 06:37:12
试着逃离倾斜键。
scpcloud \~/myfileonremote.png myfileonlocal.png
https://stackoverflow.com/questions/57274134
复制相似问题