Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/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:通过SSH在远程服务器上回送时执行的命令_Bash_Variables_Ssh_Echo - Fatal编程技术网

Bash:通过SSH在远程服务器上回送时执行的命令

Bash:通过SSH在远程服务器上回送时执行的命令,bash,variables,ssh,echo,Bash,Variables,Ssh,Echo,编辑: 我只是用echo$(printf'%q'$content')而不是echo-e“$content”解决了这个问题。我不明白为什么我必须这样做才能在远程服务器上打印,但在本地服务器上不需要 我想使用SSH在远程服务器上打印bash变量(包含一些shell命令的多行字符串)的内容 当我在本地服务器上打印它时(第21行:echo“$content”),输出是正确的。 当我在远程打印机上打印它时(第37行:echo-e“$content”),双引号消失,命令被执行(例如$(日期)) 我不明白怎

编辑:
我只是用
echo$(printf'%q'$content')
而不是
echo-e“$content”
解决了这个问题。我不明白为什么我必须这样做才能在远程服务器上打印,但在本地服务器上不需要


我想使用SSH在远程服务器上打印bash变量(包含一些shell命令的多行字符串)的内容

当我在本地服务器上打印它时(第21行:
echo“$content”
),输出是正确的。
当我在远程打印机上打印它时(第37行:
echo-e“$content”
),双引号消失,命令被执行(例如
$(日期)

我不明白怎么了。有人能帮我吗

脚本:


旁注:检查目标环境正在使用的shell
echo-e
是bashism,默认情况下,兼容posix的shell中的
echo
echo-e
为什么要添加{}?这些括号是用来执行的。你可以在
manbash
上读到它,你可以在主机名的双引号和$中添加转义字符吗?我刚刚用
echo$(printf'%q'$content')
解决了这个问题。我不明白为什么我必须在远程设备上这样做,而不是在本地设备上。旁注:检查目标环境正在使用什么shell
echo-e
是bashism,默认情况下,兼容posix的shell中的
echo
echo-e
为什么要添加{}?这些括号是用来执行的。你可以在
manbash
上读到它,你可以在主机名的双引号和$中添加转义字符吗?我刚刚用
echo$(printf'%q'$content')
解决了这个问题。我不明白为什么我必须在遥控器上这样做,而不是在本地。
#!/bin/bash

serv05=( serv05.company.org myUser )
serv06=( serv06.company.org myUser )
serv07=( serv07.company.org myUser )
serv08=( serv08.company.org myUser )

list_env=( serv05 serv06 serv07 serv08 )

read -r -d '' content << 'TEST'
#!/bin/bash

# USAGE :
# "./change_date.sh 24" : 24/09/2014
# "./change_date.sh 25" : 25/09/2014
# "./change_date.sh" : 24/09/2014

echo "Before : " $(date)
TEST

echo "$content"
echo
echo

for i in "${list_env[@]}"; do
    serv="${i}[0]"
    user="${i}[1]"
    all="${i}[@]"

    echo "## BEGIN SERV ## (${i} : ${!serv}) ##"

    ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o LogLevel=quiet -T ${!user}@${!serv} << EOF
        printf '\033[0;32m' # Green text color
        echo \$HOSTNAME : $(whoami)
        sudo su -
        whoami
        echo -e "$content"
        printf '\033[0m' # Standard text color
EOF

    echo "##  END SERV  ## (${i} : ${!serv}) ##"
    echo
done
admin@myServ> ./test.sh
#!/bin/bash

# USAGE :
# "./change_date.sh 24" : 24/09/2014
# "./change_date.sh 25" : 25/09/2014
# "./change_date.sh" : 24/09/2014

echo "Before : " $(date)


## BEGIN SERV ## (serv05 : serv05.company.org) ##
serv05 : myUser
root
#!/bin/bash

# USAGE :
# ./change_date.sh 24 : 24/09/2014
# ./change_date.sh 25 : 25/09/2014
# ./change_date.sh : 24/09/2014

echo Before :  Thu Sep 25 12:59:13 CEST 2014
##  END SERV  ## (serv05 : serv05.company.org) ##

[...]

admin@myServ>