Linux shell中相同命令的不同结果

Linux shell中相同命令的不同结果,linux,bash,Linux,Bash,但是如果我在ttt和 awk: cmd. line:1: fatal: cannot open file `nmm-990000.txt' for reading (No such file or directory) 它起作用了 这里有一个类似的问题: chmod +x ddd ; ./ddd 如果我在shell中运行此命令,它将不会给出正确的结果。但是如果我在shell脚本中使用它,它会工作。我正在使用bash 有什么建议吗?正如zb'所怀疑的,故障是由于ls的别名(仅在交互式外壳中扩展

但是如果我在ttt和

awk: cmd. line:1: fatal: cannot open file `nmm-990000.txt' for reading (No such file or directory)
它起作用了

这里有一个类似的问题:

chmod +x ddd ; ./ddd
如果我在shell中运行此命令,它将不会给出正确的结果。但是如果我在shell脚本中使用它,它会工作。我正在使用bash


有什么建议吗?

正如zb'所怀疑的,故障是由于
ls
的别名(仅在交互式外壳中扩展)和选项
--color
;当使用该输出时,颜色控制代码被包装在文件名周围,并且该聚合既不能用作要打开的文件名,也不能按预期进行排序


正如所建议的,这可以通过在nmm-*.txt中为fname使用
而不调用
ls
来避免,也可以通过使用
/bin/ls nmm-*.txt |
(这样,就不会扩展别名)。您也可以考虑删除<代码>别名ls =…< /代码>。 下面是结果:alias l.='ls-d.*'alias ll='ls-l'alias ls='ls--color'您是否以交互方式使用相同的shell并运行脚本?您的登录shell是什么?如何运行脚本?是的,我使用与bash相同的shell。请检查您的环境。在shell和内部脚本中运行“env”命令,并比较输出。建议:不要使用
ls nmm-*.txt
而只需使用:for file in nmm-*.txt。。。不要使用ls命令馈送命令管道。使用排序-k1.4n文件1文件2。。。避免使用“file”作为变量名。我尝试使用“for fname in nmm-*.txt”;这一个有效。非常感谢。但我有数百个文件,排序-k1.4n file1 fiel2。。。这是不可能的。
chmod +x ddd ; ./ddd
ls nmm-*.txt | sort -k1.4n