2013-01-16 115 views
1

有沒有辦法讓bourne shell不關心字符串比較的情況?或者,我可以將變量全部轉換爲小寫嗎?bourne shell小寫

我正在嘗試使用tr與回聲,但從來沒有可能得到它覆蓋我的變量。

回答

4

我只是想

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

,結果是

this is a test. 
+0

顯然我錯過了回聲周圍的parens。 FML。 – Derek

+0

更簡單的方法是將小寫的'$(echo $ {MYVAR ,,})'和大寫的$(echo $ {MYVAR ^^}''作爲大寫 – Dehalion

+1

@Dehalion $ {FOO ,,}是由Bash 4,它不適用於POSIX標準bourne shell。 – Dereckson

1

請注意,給出的答案是慶典,而不是對於Bourne shell不知道 $( ...)構造。 另外,TR等並不適用於所有的TR實現存在,這取決於你是(在Solaris上,你會使用/ usr/XPG4 /斌/ TR,而不是在/ usr哪個平臺/斌/ TR)。
一個適當的Bourne shell的經典TR答案是:

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

既然你是快樂與給定答案:罰款,這可能是OK的大多數讀者給出的bash的普及。

您應該正確標記問題:bourne-shell有誤導性。

+0

bourrne shell *知道$(...)構造,''在POSIX標準中已棄用。請參閱https://github.com/koalaman/shellcheck/維基/ SC2006。 – Dereckson