如何将$line
传递给cmd
命令?
#!/bin/bash
while read line
do
sshpass -p "..." ssh -o StrictHostKeyChecking=no -tt windows@172....-p 333 cmd /c "cd C:\ & download_give_id.exe '$@$line' "
done <apps.txt
答案 0 :(得分:1)
基本上,如果要将变量插入到bash字符串中,则需要使用双引号而不是单引号:
str="${var} foo bar" # works
str='${var} for bar' # works not
在特殊情况下,您在while循环中运行ssh命令,我强烈建议将/dev/tty
显式传递给命令,因为一旦远程命令应该从stdin读取 - 无论出于何种原因 - 它将否则会沉溺于while循环的stdin:
while read line ; do
ssh ... -- "${line} ..." < /dev/tty # Pass tty to stdin
done < input.txt
注意:只有在终端中启动了进程,上述命令才有效。如果进程没有在终端中运行,则需要将其他内容作为stdin传递给内部ssh命令。