我正在使用内联 bash 脚本自动执行服务器的登录过程,我正在使用 Expect 来自动执行此操作,但是在登录服务器时我还想打印一条消息,我对 echo 没有任何运气,因为我在 stackoverflow 帖子中读到,它不可靠,因为我想使用颜色编码,现在我使用 printf 来执行此操作,printf 在服务器中完美工作,但是当将其传递到我的这个小脚本中时,我收到错误,我怀疑我使用大括号而不是双引号的方式有问题,如果有人能指出我将 printf 命令放在大括号中的方式有什么问题,我会很高兴。
expect -c 'spawn ssh -t MYHOST@MYSERVER {printf [\33[01;32m A MESSAGE TO BE SHOWN \33[01;37m]\n; bash}; expect "Password:"; send "MY PASSWORD"; interact'
我收到这些错误,我将 printf 命令放在大括号内绝对有问题:
bash: {printf: command not found bash: 32m: command not found bash: 37m]n}}: command not found
我尝试使用双引号和多种使用大括号的方法,但没有任何运气。
谢谢大家。
您需要在周围加上引号
printf
:
expect -c 'spawn ssh -t MYHOST@MYSERVER "printf '"'"'\[\\33\[01\;32m\ \ A\ MESSAGE\ TO\ BE\ SHOWN\ \ \\33\[01\;37m\]\\n'"'"'; bash"; expect "Password:"; send "secret\r"; interact'