我尝试使用bash转义和双引号方法来转义下面的shell命令中的特殊字符,但两种方法都没有起作用。在ansible playbook中,正确的转义特殊字符的方法是什么?
The offending line appears to be:
name: Syncing system date with htpdate failed!, Trying wget method...
shell: date -s "$(curl -s --head http://google.com | grep '^Date:' | sed 's/Date: //g' ) +0530"
^ here
exception type: <class 'yaml.scanner.ScannerError'>
exception: mapping values are not allowed in this context
in "<unicode string>", line 15, column 93
shell: date -s "$(curl -s --head http://google.com | grep '^Date:' | sed 's/Date: //g') +0530"
其中s/Date/: //g
应该改成s/Date: //g
。 - Javier Elicesgrep x | sed 's/y/z/'
最好写成sed -n '/x/s/y/z/p'
。另请参见无用的grep
,并且/g
标志也是无用的,除非您特别期望该行中有多个Date:
出现。 - tripleee