2017-09-25 94 views
1

我试图运行diff命令没有的bash shell脚本内工作

diff <(tar -tvf HIVE_CLIENT.tar.gz | sort) <(tar -tvf YARN_CLIENT.tar.gz | sort) 

把这个命令脚本内,当我执行脚本它显示错误

syntax error near unexpected token `(' " 

但是,当我不要往里放脚本而不是直接从shell运行它。

+1

脚本的显示家当,你如何运行此脚本。 – Cyrus

回答

1

也许你的脚本运行的是/bin/sh而不是/bin/bash,但是命令替换是一个bash特性,并没有在sh中实现。所以我想你使用bash作为你的shell,这就是它在命令行工作的原因。

尝试添加该前缀为您的脚本,删除现有shebangs(如#!/bin/sh或类似):

#!/bin/bash 
1

你应该尝试以下两种操作:

  1. 使用#!/bin/bash为您的家当(您的脚本的第一行)

  2. 这可能需要根据您的bash,只有在操作1没有帮助。使用下面的命令之间posix模式这是需要过程替代翻转:

    set +o posix 
    diff <(tar -tvf HIVE_CLIENT.tar.gz | sort) <(tar -tvf YARN_CLIENT.tar.gz | sort) 
    set -o posix 
    

    例子:

    wc -l <(ls -lrt) 
    sh: syntax error near unexpected token `(' 
    
    set +o posix 
    wc -l <(ls -lrt) 
    114 /dev/fd/00 
    
    set -o posix 
    wc -l <(ls -lrt) 
    sh: syntax error near unexpected token `('