小编qua*_*n3t的帖子

如何转义定界符 bash 脚本中的字符

我有一个 bash 脚本,它读取输入文件并使用heredoc使用expect ssh到服务器,但在转义输入文件中的某些特殊字符时遇到问题。这是我所拥有的..


我有一个名为 input.txt 的文件,其中包含:

1.2.3.4:abcdefg
2.3.4.5:abc$def
Run Code Online (Sandbox Code Playgroud)

我有一个 bash 脚本,如下所示。如果密码不包含字符“$”,它工作正常,但当密码包含“$”时,它会崩溃,因为它将 $ 后面的部分视为变量。

#!/bin/bash

if [ -e "input.txt" ]; then
    while read i; do

/usr/bin/expect <(cat << EOD
set timeout 15
spawn ssh "user@$(echo $i | cut -d: -f 1)"
#######################

expect "yes/no" {
    send "yes\r"
    expect "Password:" { send "$(echo $i | cut -d: -f 2)\r" }
} "Password:" { send "$(echo $i | cut -d: -f 2)\r" }
expect -re "day: $" { send "\r" }
expect …
Run Code Online (Sandbox Code Playgroud)

bash special-characters expect here-document

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

标签 统计

bash ×1

expect ×1

here-document ×1

special-characters ×1