tr [a-z] [A-Z]在unix中显示错误

时间:2013-02-01 12:11:33

标签: unix tr

在unix中,行echo "abc" | tr [a-z] [A-Z]显示以下错误:

    tr: extra operand `b'
    Try tr --help' for more information.

如果从同一服务器或任何其他服务器中的任何其他目录运行,则不显示错误并输出正确的输出ABC。在特定目录中,它显示上述错误 我验证并发现没有这样的冲突文件或脚本。没有名称为tr的脚本 目录内以及目录外的which tr命令提供相同的输出/usr/bin/trtr的位置,我甚至尝试echo "abc" | /usr/bin/tr [a-z] [A-Z]以避免与其他文件发生任何冲突,如果有的话。但是同样的错误仍然存​​在 如果我尝试echo "abc" | tr 'a' 'B',它会将输出生成为Bbc。我无法弄清楚错误。

3 个答案:

答案 0 :(得分:7)

tr不需要括号:

tr a-z A-Z

[a-z]对您的shell有特殊含义(扩展为匹配文件名列表)。可能在目录中没有匹配的文件(或几个匹配的文件)。

答案 1 :(得分:0)

是的,它是正确的,tr [a-z]除转换外,它会查找从az的文件名,在这种情况下[a-z]转换为该文件

转到用户主目录并查找文件名,如

ls -lrth 

-rw-r--r--   1 root         root          1.5M Aug  3 11:02 a

重命名

mv a a_backup

答案 2 :(得分:0)

您要使用[:upper:] [:lower:]来避免文件名和表达式的歧义。

  

回显“ abc” | tr [:lower:] [:upper:]