Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 壳牌公司|&&引用;ansible中无法识别语法_Shell_Ansible - Fatal编程技术网

Shell 壳牌公司|&&引用;ansible中无法识别语法

Shell 壳牌公司|&&引用;ansible中无法识别语法,shell,ansible,Shell,Ansible,我正在ansible playbook中运行一个shell命令,我想在其中存储输出的最后一行,但出现以下错误: 致命:[webserver]:失败!=>{“changed”:true,“cmd”:“/hash.sh-p admin123 |&tail-1”,“delta”:“0:00:00.002563”,“end”:“2019-06-06 16:25:56.597951”,“failed”:true,“msg”:“非零返回代码”,“rc”:2,“开始”:“2019-06-06 16:25:56

我正在ansible playbook中运行一个shell命令,我想在其中存储输出的最后一行,但出现以下错误:

致命:[webserver]:失败!=>{“changed”:true,“cmd”:“/hash.sh-p admin123 |&tail-1”,“delta”:“0:00:00.002563”,“end”:“2019-06-06 16:25:56.597951”,“failed”:true,“msg”:“非零返回代码”,“rc”:2,“开始”:“2019-06-06 16:25:56.595388”,“stderr”:“/bin/sh:1:语法错误:\”&“意外”,“stderr\u行”:“/bin/sh:1:语法错误:\”&\“意外”],“标准输出”:“,“标准输出行”:[]}

main.yaml

- name: Get hash value of admin password
  shell: "./hash.sh -p {{admin_password}} |& tail -1"
  args:
    chdir: /usr/share/tools
  register: admin_password_hash

当我直接在远程机器上运行该命令(
/hash.sh-p admin123 |&tail-1
)时,它会给出正确的输出。

假设您的意思是通过管道重定向stderr,这是符合POSIX的
cmd1 |&cmd2
的替代方法(因此,与
/bin/sh
一起工作的方式)is
cmd1 2>&1 | cmd2

- name: "Get hash value of admin password"
  shell: "./hash.sh -p {{admin_password | quote}} 2>&1 | tail -1"
  args:
    chdir: /usr/share/tools
  register: admin_password_hash

| quote
很重要:如果没有它,您可能会出现重大安全问题,因为选择
$(rm-rf/*)
作为密码的人可能会导致您的整个系统被擦除。(我想这是您使用的密码!)

|
无效
/bin/sh
语法。