有没有办法让 bourne shell 不关心字符串比较的大小写?或者,我可以将变量转换为全小写吗?
我试图将 tr 与 echo 一起使用,但永远无法让它覆盖我的变量。
我刚试过
MYVAR="This is a Test."
MYVAR=$(echo $MYVAR | tr '[:upper:]' '[:lower:]')
echo $MYVAR
结果是
this is a test.
请注意,给出的答案是针对bash的,而不是针对不知道
$(...)构造的 Bourne shell。此外,所有 tr 实现中都不存在tr类upper、lower等,这取决于您所在的平台(在 Solaris 上,您将使用 /usr/xpg4/bin/tr 而不是 /usr/bin/tr)。具有经典 tr答案
的正确Bourne shell是:
MYVAR=`echo "$MYVAR" | tr '[A-Z]' '[a-z]'`
由于您对给定的答案感到满意:很好,鉴于 bash 无处不在,这对于大多数读者来说可能没问题。
不过,您应该正确地标记了这个问题:bourne-shell 具有误导性。