2017-09-25 127 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 `('