我正在尝试运行
diff <(tar -tvf HIVE_CLIENT.tar.gz | sort) <(tar -tvf YARN_CLIENT.tar.gz | sort)
将此命令放入脚本中,当我执行脚本时显示错误
syntax error near unexpected token `(' "
但是当我没有放入内部脚本而不是直接从shell运行时,它就可以工作。
答案 0 :(得分:1)
可能你的脚本是使用/bin/sh
而不是/bin/bash
运行的,但命令替换是一个bash功能,而不是在sh中实现。所以我想你使用bash作为你的shell,这就是它在命令行工作的原因。
尝试将此前缀添加到您的脚本中,并删除现有的shebang(如#!/bin/sh
或类似内容):
#!/bin/bash
答案 1 :(得分:1)
您应该尝试以下两项操作:
使用#!/bin/bash
作为你的shebang(脚本的第一行)
根据您的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 `('