小编adi*_*ya 的帖子

将多行回显到文件中

我有一个共享托管服务器的httpd.conf文件,我有一个任务是将每个虚拟主机迁移到vps.使用awk我为特定站点提取了一个虚拟主机条目块.并将该条目存储在变量中.但是当我回显变量的输出来附加vps服务器的httpd.conf时,它给出了一个错误

bash:命令替换:第1行:意外令牌newline' bash: command substitution: line 1:回显附近的语法错误'

任何人都可以通过回显一个具有多行的变量来判断附加简单文本文件的确切方法.

我期望的脚本如下:

#!/usr/bin/expect 
set remote_ip [lindex $argv 0] 
set username [lindex $argv 1] 
set remote_command [lindex $argv 2] 
foreach {remote_ip username remote_command} $argv {break} 
spawn ssh -o "StrictHostKeyChecking no" root@$remote_ip `echo $remote_command >> /etc/httpd/conf/httpd.conf`
expect "*assword: " 
send "redhat\r" 
interact 
Run Code Online (Sandbox Code Playgroud)

变量"remote_command"包含虚拟主机条目的模式.使用printf但仍存在同样的问题. -


我的remote_command包含以下值

<VirtualHost>
DirectoryIndex index.php
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

它仍然给出相同的错误.我使用了""引号,但它适用于单行,而不适用于多行.

我的主脚本script.sh包含行

#!/bin/bash
some code .....
some code......
some code ......
echo "<VirtualHost $D_IPADDRESS>" > /opt/remotehttpd_conf
awk "p && /\/VirtualHost/{exit} /$SITENAME/{p=1}p" /opt/httpd.conf >> /opt/remotehttpd_conf …
Run Code Online (Sandbox Code Playgroud)

bash echo

5
推荐指数
2
解决办法
2万
查看次数

expect命令在bash脚本中不起作用

我有一个与期望相关的问题.

当我运行包含以下行的abc.sh时

#!/usr/bin/expect
spawn scp /etc/httpd/conf/httpd.conf 192.168.0.12:/tmp
######################
expect {
-re "password:" {
exp_send "PASSWORD\r"
}
}
interact
Run Code Online (Sandbox Code Playgroud)

它的工作正常

但是当我在运行的脚本中使用类似的代码时,它不起作用


#!/bin/bash
clear
while read -u3 LINE
do
code .........
code .......
code  ........

REMOTE_COMMANDS1="scp -r -v $BASE_DIRECTORY/$USERNAME $D_IPADDRESS:/home/"

spawn $REMOTE_COMMANDS1
######################
expect {
-re "password:" {
exp_send "redhat\r"
}
}
interact


done 3< /opt/sitelist.txt
Run Code Online (Sandbox Code Playgroud)

它给出了错误

./script.sh:line 62:意外令牌附近的语法错误}' ./script.sh: line 62:}'

我认为这是因为我没有在脚本的顶部包含#!/ usr/bin/expect但是如果我使用它并执行我的脚本它不会做任何事情并且在执行后显示终端中的所有代码.那么我们可以同时包括#!/ usr/bin/expect和#!/ bin/bash吗?

此致,Aditya

expect spawn

4
推荐指数
1
解决办法
1万
查看次数

标签 统计

bash ×1

echo ×1

expect ×1

spawn ×1