diff <(tar -tvf HIVE_CLIENT.tar.gz | sort) <(tar -tvf YARN_CLIENT.tar.gz | sort)
把這個命令腳本內,當我執行腳本它顯示錯誤
syntax error near unexpected token `(' "
但是,當我不要往裏放腳本而不是直接從shell運行它。
diff <(tar -tvf HIVE_CLIENT.tar.gz | sort) <(tar -tvf YARN_CLIENT.tar.gz | sort)
把這個命令腳本內,當我執行腳本它顯示錯誤
syntax error near unexpected token `(' "
但是,當我不要往裏放腳本而不是直接從shell運行它。
也許你的腳本運行的是/bin/sh
而不是/bin/bash
,但是命令替換是一個bash特性,並沒有在sh中實現。所以我想你使用bash作爲你的shell,這就是它在命令行工作的原因。
嘗試添加該前綴爲您的腳本,刪除現有shebangs(如#!/bin/sh
或類似):
#!/bin/bash
你應該嘗試以下兩種操作:
使用#!/bin/bash
爲您的家當(您的腳本的第一行)
這可能需要根據您的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 `('
腳本的顯示家當,你如何運行此腳本。 – Cyrus