我的脚本如下:
#!/bin/bash
if lscpu | grep 'CPU max MHz' >/dev/null 2>&1; then
cpu_speed=$(lscpu | grep 'CPU max MHz' | cut -d':' -f2 | awk '{print $1}')
else
cpu_speed=$(lscpu | grep 'CPU MHz' | cut -d':' -f2 | awk '{print $1}')
fi
echo -ne "${cpu_speed}"
它在输出中添加newline如下:
"stdout": "rn4000.0000",
即使我的脚本文件为空,它仍然在stdout中添加newline如下:
"stdout": "rn"
我的模块如下:
- name: Get Processor Speed
script: files/get_cpu_speed.sh
register: cpu_speed_output
become: yes
所以,正如您所看到的那样。
我试图在线查找任何参考,如果引导newline在Ansible脚本命令中很常见,但是没有。
那么,在我的情况下,什么可能导致领先行?
调试输出如下:
ssh -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=testuser -o ConnectTimeout=10 -o ControlPath=/root/.ansible/cp/c4ee167dc2 -tt myserver1 '/bin/sh -c '"'"'sudo -H -S -p "[sudo via ansible, key=epollvusfsfrfsfsfsfmrxdcida] password: " -u root /bin/sh -c '"'"'"'"'"'"'"'"'echo BECOME-SUCCESS-epollvusfsfrfsfsfsfmrxdcida; /home/testuser/.ansible/tmp/ansible-tmp-1557164925.73-152013190475693/get_cpu_speed.sh'"'"'"'"'"'"'"'"' && sleep 0'"'"''
我无法再现这种行为。如果我完全按照介绍的方式运行您的代码,则不会看到任何领先的Newline。无论如何,都有一个简单的解决方法。而不是指:
cpu_speed_output.stdout
您可以参考:
cpu_speed_output.stdout.strip()
strip()
方法将剥离任何领先或落后的空间。