だから、次のような任務を受けました。
- name: "Use echo."
shell: echo -e "First Line\n " > "/tmp/{{ ansible_date_time.date }}_test.txt"
delegate_to: localhost
become: 'no'
changed_when: 'false'
run_once: 'yes'
生成されたファイルを表示すると、次の結果が表示されます。
-e First Line
<newline printed properly>
私が望むもの:
First Line
<newline printed properly>
私は基本的にさまざまな種類の引用を試しましたが、私が見逃しているものは何ですか?
ベストアンサー1
さまざまな歴史的理由により、バージョンごとにecho
主張を異なって扱います。
$ bash -c 'echo -e hello'
hello
$ dash -c 'echo -e hello'
-e hello
/bin/sh
Dashは、シェルにエスケープされているほとんどのプログラムが使用可能であるDebianとUbuntuのシェルです。それはおそらくあなたがここで経験している問題でしょう。
を使用すると、非互換性を防ぐことができますprintf
。これは標準的なツールであり、非互換性が少ない(常に処理\n
など)。
shell: printf "First Line\n " > "/tmp/{{ ansible_date_time.date }}_test.txt"
引用符を使用する場合、オプションはユーティリティ自体で処理され、引用符は完全にシェル構成であるため、Yesを使用するか、を使用するecho '-e'
と、それ自体でまったく同じ内容をecho -e
表示できます。echo
また見なさい: