linux expect 单引号和双引号
时间: 2024-05-17 13:14:37 浏览: 129
在Linux expect中,单引号和双引号的作用与在bash中是相同的。单引号用于保留字符串中所有特殊字符的字面含义,而双引号用于允许字符串中的某些特殊字符被解释。例如:
- 单引号示例:`expect 'Password:'`
- 双引号示例:`expect "Password: "`
在双引号中,可以用反斜线来转义某些字符,例如:
- `expect "file\\name"`:输出为`file\name`
- `expect "a\"b\"c"`:输出为`a"b"c`
相关问题
shell expect -c "expect 'password:' send " 双引号中的单引号无效
是的,您说得没错。在双引号中使用单引号是无效的,因为单引号在 shell 中是一个特殊字符,表示一个字符串的开始和结束。如果您想在双引号中使用单引号,可以使用转义符号 "\" 来转义单引号。例如,您可以这样写:
```
shell expect -c "expect 'password:' send \'your_password\'"
```
这将在双引号中使用了单引号,并使用转义符号转义了它。
exe_remote_cmd(){ local ip=$1 local cmd=$2 expect -c " spawn ssh ${ip} \"source /etc/profile;$cmd\" expect { \'password*\' {send \"${password}\r\";exp_continue} \"yes/no\" {send \"yes\r\";exp_continue} } " } 单引号无效
是的,您说的没错。在这个例子中,使用单引号是无效的,因为单引号在 shell 中是一个特殊字符,表示一个字符串的开始和结束。您需要使用双引号来引用字符串,并使用转义字符来转义其中的双引号、反斜杠等特殊字符。例如,您可以这样写:
```
exe_remote_cmd() {
local ip="$1"
local cmd="$2"
expect -c "
spawn ssh ${ip} \"source /etc/profile;$cmd\"
expect {
\"password*\" {send \"${password}\\r\";exp_continue}
\"yes/no\" {send \"yes\\r\";exp_continue}
}
"
}
```
这里使用了双引号来引用字符串,并使用转义符号 '\' 来转义其中的双引号和反斜杠。
阅读全文