每個輸入字符串我接受弦數作爲用戶輸入到我的劇本一樣 -大寫在shell腳本
read -p "User's full name : " FULLNAME
read -p "User's Manager's name : " MGRNAME
.
.
我希望所有輸入的字符串是大寫,即利用輸入字符串中的每個字。
我寫了一個簡單的函數一樣 -
capitalize()
{
$1=`echo ${$1}|sed -e "s/\b\(.\)/\u\1/g"`
}
,並呼籲這個功能 -
capitalize FULLNAME
這是給下面的錯誤 -
line 77: ${$1}: bad substitution
還試圖間接擴張 -
capitalize()
{
$1=`echo ${!1^}`
}
它拋出下面的錯誤 -
line 77: FULLNAME=Kamlesh: command not found
請使用正確的語法或任何其他方式來實現這一目標提供幫助。
示例輸出 - 我正在讀取FULLNAME變量中的輸入。當我調用capitalize()時,它應該更新FULLNAME變量本身的值。
對於例如,如果用戶輸入是 - 「卡姆利什gallani」
如果我請現在利用FULLNAME,然後FULLNAME應包含「卡姆利什Gallani」
標記了你都KSH和bash。哪一個?在bash 4.x中有相關的語法擴展,ksh沒有。 **請僅爲您實際使用的shell標記** –
順便說一句,對於'$ {$ 1}',如果您希望這樣做,那麼您應該查找[間接擴展](http:// mywiki .wooledge.org/BashFAQ/006#Evaluating_indirect.2Freference_variables)。 –
(...在不同的說明中,全變量變量名用於系統和shell的含義變量,而具有至少一個小寫字符的變量的名稱空間保留給應用程序使用。因此,腳本應該使用小寫變量以避免錯誤地覆蓋操作系統的含義,這是由POSIX規則規定的環境變量規定的,但是設置與環境變量名稱重疊的shell變量將覆蓋後者,所以該規則適用於地方)。 –