在unix中,该行echo "abc" | tr [a-z] [A-Z]显示以下错误:
tr: extra operand `b'
Try tr --help' for more information.
Run Code Online (Sandbox Code Playgroud)
ABC如果从同一服务器或任何其他服务器中的任何其他目录运行,它不会显示错误并输出正确的输出.在特定目录中,它显示上述错误.
我验证并发现没有这样的冲突文件或脚本.没有具有该名称的脚本tr.
which tr目录内部以及目录外部的命令给出相同的输出/usr/bin/tr.
取而代之的是tr,我甚至试图echo "abc" | /usr/bin/tr [a-z] [A-Z]避免与其他文件发生任何冲突,如果有的话.但同样的错误仍然存在.
如果我尝试echo "abc" | tr 'a' 'B',它会产生输出为Bbc.我无法弄清楚错误.
tr 不需要括号:
tr a-z A-Z
Run Code Online (Sandbox Code Playgroud)
[a-z]对shell有特殊意义(扩展为匹配文件名列表).在一个不起作用的目录中可能存在匹配的文件(或几个匹配的文件).