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