Unix 排序-t$'\t';是否与POSIX sh兼容?

Unix 排序-t$'\t';是否与POSIX sh兼容?,unix,sh,Unix,Sh,我正在尝试使用管道命令对目录中的多个文件使用for循环,但它似乎不起作用。当我在单个文件上运行相同的命令时,它似乎可以工作。我哪里弄错了 for x in *summary-FDR0.05 ; do sort -t $'\t' -k8,8rn $x | head -n 50000 | sortBed -i > sorted_top_50k_$x.bed; done 我的所有文件都以summary-FDR0.05结尾。当我跑的时候 sort -t $'\t' -k8,8rn sample1

我正在尝试使用管道命令对目录中的多个文件使用for循环,但它似乎不起作用。当我在单个文件上运行相同的命令时,它似乎可以工作。我哪里弄错了

for x in *summary-FDR0.05 ; do sort -t $'\t' -k8,8rn $x | head -n 50000 | sortBed -i > sorted_top_50k_$x.bed; done
我的所有文件都以
summary-FDR0.05
结尾。当我跑的时候

sort -t $'\t' -k8,8rn sample13-summary-FDR0.05 | head -n 50000 | sortBed -i > sorted_top_50k_S_13_O1_122*K27ac.bed
这似乎很有效。我能知道我在哪里弄到的吗

错误:

sort: multi-character tab `$\\t'

感谢与POSIX兼容,将
$'\t'
替换为
“$(printf“\t”)”

在收到错误消息时,看起来您使用的是
sh
而不是
bash
。但是如何纠正这个问题呢,posix兼容性不允许在
bash
下运行
sh
。请看,您可以轻松地在bash中运行
sh
代码,但您似乎希望执行相反的操作。或者编写可移植代码(例如,no
$'\t'
then),它可以在任何POSIX shell中工作;或者编写Bash代码,并在Bash only中运行。顺便说一句,这里还有其他bug会自动为您识别。非常感谢。这很有效。我无法理解在这种情况下POSIX的兼容性应该是什么。谢谢,如果这解决了你的问题,请点击空心记号,使它变成绿色。这样,这个问题就不会再被认为没有解决。谢谢