Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.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中将命令包含在转义字符中_Bash - Fatal编程技术网

在bash中将命令包含在转义字符中

在bash中将命令包含在转义字符中,bash,Bash,我有一个引号中的命令: ssh -i "/home/$USER/$KEY" "$USER"@"$WORKER1IP" "echo 'if [[ `uname -a` == Darwin* ]]; then' >> /home/$USER/tachyon-0.5.0/conf/tachyon-env.sh" “uname”部分必须按字面意思编写,而不是执行。我尝试在“uname”部分之前使用“\”,但我不知道如何关闭它。有人能帮忙吗 您可以在BASH中对转义的$使用$(…):

我有一个引号中的命令:

 ssh -i "/home/$USER/$KEY" "$USER"@"$WORKER1IP"   "echo 'if [[ `uname -a` == Darwin* ]]; then' >> /home/$USER/tachyon-0.5.0/conf/tachyon-env.sh"
“uname”部分必须按字面意思编写,而不是执行。我尝试在“uname”部分之前使用“\”,但我不知道如何关闭它。有人能帮忙吗

您可以在BASH中对转义的
$
使用
$(…)

ssh -i "/home/$USER/$KEY" "$USER"@"$WORKER1IP"   "echo 'if [[ \$(uname -a) == Darwin* ]]; then' >> /home/$USER/tachyon-0.5.0/conf/tachyon-env.sh"
在BASH中,您可以将
$(…)
与转义的
$
一起使用:

ssh -i "/home/$USER/$KEY" "$USER"@"$WORKER1IP"   "echo 'if [[ \$(uname -a) == Darwin* ]]; then' >> /home/$USER/tachyon-0.5.0/conf/tachyon-env.sh"
在BASH中,您可以将
$(…)
与转义的
$
一起使用:

ssh -i "/home/$USER/$KEY" "$USER"@"$WORKER1IP"   "echo 'if [[ \$(uname -a) == Darwin* ]]; then' >> /home/$USER/tachyon-0.5.0/conf/tachyon-env.sh"
在BASH中,您可以将
$(…)
与转义的
$
一起使用:

ssh -i "/home/$USER/$KEY" "$USER"@"$WORKER1IP"   "echo 'if [[ \$(uname -a) == Darwin* ]]; then' >> /home/$USER/tachyon-0.5.0/conf/tachyon-env.sh"

改为使用here文档,这简化了嵌套的引号

ssh -i "/home/$USER/$KEY" "$USER@$WORKER1IP" <<EOF
    echo 'if [[ $(uname -a) == Darwin* ]]; then' >> "/home/$USER/tachyon-0.5.0/conf/tachyon-env.sh"
EOF
ssh-i”/home/$USER/$KEY”“$USER@$WORKER1IP”“/home/$USER/tachyon-0.5.0/conf/tachyon-env.sh”
EOF

改用here文档,它简化了嵌套的引号

ssh -i "/home/$USER/$KEY" "$USER@$WORKER1IP" <<EOF
    echo 'if [[ $(uname -a) == Darwin* ]]; then' >> "/home/$USER/tachyon-0.5.0/conf/tachyon-env.sh"
EOF
ssh-i”/home/$USER/$KEY”“$USER@$WORKER1IP”“/home/$USER/tachyon-0.5.0/conf/tachyon-env.sh”
EOF

改用here文档,它简化了嵌套的引号

ssh -i "/home/$USER/$KEY" "$USER@$WORKER1IP" <<EOF
    echo 'if [[ $(uname -a) == Darwin* ]]; then' >> "/home/$USER/tachyon-0.5.0/conf/tachyon-env.sh"
EOF
ssh-i”/home/$USER/$KEY”“$USER@$WORKER1IP”“/home/$USER/tachyon-0.5.0/conf/tachyon-env.sh”
EOF

改用here文档,它简化了嵌套的引号

ssh -i "/home/$USER/$KEY" "$USER@$WORKER1IP" <<EOF
    echo 'if [[ $(uname -a) == Darwin* ]]; then' >> "/home/$USER/tachyon-0.5.0/conf/tachyon-env.sh"
EOF
ssh-i”/home/$USER/$KEY”“$USER@$WORKER1IP”“/home/$USER/tachyon-0.5.0/conf/tachyon-env.sh”
EOF
这应该可以:

ssh -i "/home/$USER/$KEY" "$USER"@"$WORKER1IP"   "echo 'if [[ \"\$(uname -a)\" == Darwin* ]]; then' >> /home/$USER/tachyon-0.5.0/conf/tachyon-env.sh"
这也是:

ssh -i "/home/$USER/$KEY" "$USER"@"$WORKER1IP"   "echo 'if [[ \`uname -a\` == Darwin* ]]; then' >> /home/$USER/tachyon-0.5.0/conf/tachyon-env.sh"
这应该起作用:

ssh -i "/home/$USER/$KEY" "$USER"@"$WORKER1IP"   "echo 'if [[ \"\$(uname -a)\" == Darwin* ]]; then' >> /home/$USER/tachyon-0.5.0/conf/tachyon-env.sh"
这也是:

ssh -i "/home/$USER/$KEY" "$USER"@"$WORKER1IP"   "echo 'if [[ \`uname -a\` == Darwin* ]]; then' >> /home/$USER/tachyon-0.5.0/conf/tachyon-env.sh"
这应该起作用:

ssh -i "/home/$USER/$KEY" "$USER"@"$WORKER1IP"   "echo 'if [[ \"\$(uname -a)\" == Darwin* ]]; then' >> /home/$USER/tachyon-0.5.0/conf/tachyon-env.sh"
这也是:

ssh -i "/home/$USER/$KEY" "$USER"@"$WORKER1IP"   "echo 'if [[ \`uname -a\` == Darwin* ]]; then' >> /home/$USER/tachyon-0.5.0/conf/tachyon-env.sh"
这应该起作用:

ssh -i "/home/$USER/$KEY" "$USER"@"$WORKER1IP"   "echo 'if [[ \"\$(uname -a)\" == Darwin* ]]; then' >> /home/$USER/tachyon-0.5.0/conf/tachyon-env.sh"
这也是:

ssh -i "/home/$USER/$KEY" "$USER"@"$WORKER1IP"   "echo 'if [[ \`uname -a\` == Darwin* ]]; then' >> /home/$USER/tachyon-0.5.0/conf/tachyon-env.sh"


我想OP需要
'EOF'
(单引号)。也许,除非
$USER
需要在本地扩展。它是原始的。哦,我明白了,但是如果您远程或本地扩展
$USER
,它应该不会有什么区别,因为OP是作为
$USER
连接的。另一种选择是在那里使用
$HOME
。如果在
EOF
周围没有单引号,这是没有意义的,因为您将远程评估本地
uname
命令的输出。我想OP希望
'EOF'
(单引号)。可能,除非
$USER
需要在本地展开。它是原始的。哦,我明白了,但是如果您远程或本地扩展
$USER
,它应该不会有什么区别,因为OP是作为
$USER
连接的。另一种选择是在那里使用
$HOME
。如果在
EOF
周围没有单引号,这是没有意义的,因为您将远程评估本地
uname
命令的输出。我想OP希望
'EOF'
(单引号)。可能,除非
$USER
需要在本地展开。它是原始的。哦,我明白了,但是如果您远程或本地扩展
$USER
,它应该不会有什么区别,因为OP是作为
$USER
连接的。另一种选择是在那里使用
$HOME
。如果在
EOF
周围没有单引号,这是没有意义的,因为您将远程评估本地
uname
命令的输出。我想OP希望
'EOF'
(单引号)。可能,除非
$USER
需要在本地展开。它是原始的。哦,我明白了,但是如果您远程或本地扩展
$USER
,它应该不会有什么区别,因为OP是作为
$USER
连接的。另一种选择是在那里使用
$HOME
。如果在
EOF
周围没有单引号,则没有意义,因为您将远程计算本地
uname
命令的输出。不,这是在括号中打印uname-a的结果。不,这是在括号中打印uname-a的结果。不,这是在括号中打印uname-a的结果。不,这是在括号中打印uname-a的结果。好的,我用uname-a修正了它。好的,我用uname-a修正了它。好的,我用uname-a修正了它。好的,我用uname-a修正了它。