3

有没有办法让 bourne shell 不关心字符串比较的大小写?或者,我可以将变量转换为全小写吗?

我试图将 tr 与 echo 一起使用,但永远无法让它覆盖我的变量。

4

2 回答 2

7

我刚试过

MYVAR="This is a Test."
MYVAR=$(echo $MYVAR | tr '[:upper:]' '[:lower:]')
echo $MYVAR

结果是

this is a test.
于 2013-01-16T22:39:18.753 回答
3

请注意,给出的答案是针对bash的,而不是针对不知道 $(...)构造的 Bourne shell。此外,所有 tr 实现中都不存在trupperlower等,这取决于您所在的平台(在 Solaris 上,您将使用 /usr/xpg4/bin/tr 而不是 /usr/bin/tr)。具有经典 tr答案
的正确Bourne shell是:

MYVAR=`echo "$MYVAR" | tr '[A-Z]' '[a-z]'`

由于您对给定的答案感到满意:很好,鉴于 bash 无处不在,这对于大多数读者来说可能没问题。

不过,您应该正确地标记了这个问题:bourne-shell 具有误导性。

于 2013-02-07T13:03:15.967 回答