for file in `ls nmm-*.txt`; do
awk -v fn="${file}" 'function abs(x){return ((x<0.0)?-x:x)} {if(NR>1 &&(abs($1)>4096 || abs($2)>4096)) print fn" "NR;}' ${file}
done
当我在shell中运行此命令时,我收到错误:
awk: cmd. line:1: fatal: cannot open file `nmm-990000.txt' for reading (No such file or directory)
但是如果我将相同的命令放在像ttt和
这样的文件中chmod +x ddd ; ./ddd
它有效。
这是一个类似的问题:
ls nmm-*.txt | sort -k1.4n
如果我在shell中运行它,此命令将不会给出正确的结果。但如果我在shell脚本中使用它,它的工作原理。我正在使用bash。
有什么建议吗?
答案 0 :(得分:0)
作为zb&#39;怀疑,故障是由于ls
的别名(仅在交互式外壳中展开)而带有选项--color
;当使用该输出时,颜色控制代码被包裹在文件名周围,并且这个联合体既不能用作文件名,也不能像人们期望的那样打开或排序。
根据建议,使用for fname in nmm-*.txt
而不调用ls
,也可以使用/bin/ls nmm-*.txt | …
(这样,不会扩展任何别名)可以避免这种情况。您也可以考虑删除alias ls=…
。