Mohtashim,

      Try using "echo *-e*".

Em quarta-feira, 4 de setembro de 2019 02:45:46 UTC-3, Mohtashim S escreveu:
>
> I have check.sh script that I wish to run on the target nodes:
>
> cat check.sh
>
> str=`echo $1 | sed -e 's#[\][\]n# #g'`
> echo $str>check.row
>
>
> It is suppose to replace \\n with a single white space from the argument 
> and save it in check.row file.
>
> When I run it manually on the target server i get good output results as 
> shown below:
>
> bash -x ./check.sh '/fin/app/01/scripts\\n/fin/app/01/sql'
>> ++ echo '/fin/app/01/scripts\\n/fin/app/01/sql'
>> ++ sed -e 's#[\][\]n# #g'
>> + str='/fin/app/01/scripts /fin/app/01/sql'
>> + echo /fin/app/01/scripts /fin/app/01/sql
>>
>
> Here is the check.row file output:
>
> [user1@remotehost1 ~]$ cat check.row
>> /fin/app/01/scripts /fin/app/01/sql
>
>
> However, when i run the same using ansible shell or command module I do 
> not get the expected results.
>
> Below is my playbook:
>
>   tasks:
>    - copy:
>        src: "{{ playbook_dir }}/files/check.sh"
>        dest: "~/"
>        mode: 0754
>
>
>    - set_fact:
>        install_dir: "{{ 
> hostvars[\'localhost\'][\'command_result\'].stdout.split('\t')[2] }}"
>
>
>    - shell: "bash -x  ~/check.sh '{{ install_dir }}' > 
> ~/check_rollback.log"
>
>
> See ansible's debug output below:   
>    
>
>> changed: [10.8.44.55] => {
>>     "changed": true, 
>>     "cmd": "bash -x  ~/check.sh '/fin/app/01/scripts\\n/fin/app/01/sql' > 
>> ~/check_rollback.log", 
>>     "delta": "0:00:00.118943", 
>>     "end": "2019-09-04 10:50:16.503745", 
>>     "invocation": {
>>         "module_args": {
>>             "_raw_params": "bash -x  ~/check.sh 
>> '/fin/app/01/scripts\\n/fin/app/01/sql' > ~/check_rollback.log", 
>>             "_uses_shell": true, 
>>             "argv": null, 
>>             "chdir": null, 
>>             "creates": null, 
>>             "executable": null, 
>>             "removes": null, 
>>             "stdin": null, 
>>             "stdin_add_newline": true, 
>>             "strip_empty_ends": true, 
>>             "warn": true
>>         }
>>     }, 
>>     "rc": 0, 
>>     "start": "2019-09-04 10:50:16.384802", 
>>     "stderr": "++ echo '/fin/app/01/scripts\\n/fin/app/01/sql'\n++ sed -e 
>> 's#[\\][\\]n# #g'\n+ str='/fin/app/01/scripts\\n/fin/app/01/sql'\n+ echo 
>> '/fin/app/01/scripts\\n/fin/app/01/sql'", 
>>     "stderr_lines": [
>>         "++ echo '/fin/app/01/scripts\\n/fin/app/01/sql'", 
>>         "++ sed -e 's#[\\][\\]n# #g'", 
>>         "+ str='/fin/app/01/scripts\\n/fin/app/01/sql'", 
>>         "+ echo '/fin/app/01/scripts\\n/fin/app/01/sql'"
>>     ], 
>>     "stdout": "", 
>>     "stdout_lines": []
>> }
>
>
> And here is the check.row file output:
>
> [user1@remotehost1 ~]$ cat check.row
>> /fin/app/01/scripts\\n/fin/app/01/sql
>
>
> As you can instead of single whitespace it is now printing \\n. 
>
> One can replicate this issue easily. Can you please suggest why am I 
> getting this issue and how to fix this?
>

-- 
You received this message because you are subscribed to the Google Groups 
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/575b0391-f5ab-4c02-a367-a6cece70b40d%40googlegroups.com.

Reply via email to