第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么此bash函數(shù)僅打印整個字符串的第一個單詞?

為什么此bash函數(shù)僅打印整個字符串的第一個單詞?

收到一只叮咚 2021-04-11 08:58:57
我正在嘗試創(chuàng)建函數(shù),該函數(shù)將以某種顏色打印綁定到變量的消息。消息變量作為此函數(shù)的參數(shù)傳遞。問題是我只得到第一個空格之前的文本(只有消息的第一個單詞)。我的腳本如下所示:#!/usr/bashlbGREEN='\e[1;92m'NC='\e[0m'normalMessage="Everything fine"echo_message() {    echo -e  ${lbGREEN}$1${NC}}echo_message $normalMessage 我的輸出是:Everything
查看完整描述

3 回答

?
慕斯709654

TA貢獻1840條經(jīng)驗 獲得超5個贊

對我來說,我不得不更改“#!/ bin / bash”的標題,但是顯然這對您來說不是問題。


在回顯中,僅打印帶有$ 1的第一個單詞,如果將其更改為$ 2,則將打印第二個單詞(參數(shù)),依此類推。


您可以在引號內(nèi)傳遞名稱,也可以使用$ @打印所有參數(shù)。


解決方案1(帶有$ @):


lbGREEN='\e[1;92m'

NC='\e[0m'

normalMessage="Everything fine"

echo_message() {

    echo -e  ${lbGREEN}$@${NC}

}

echo_message $normalMessage

解決方案2(帶引號):


lbGREEN='\e[1;92m'

NC='\e[0m'

normalMessage="Everything fine"

echo_message() {

    echo -e  ${lbGREEN}$1${NC}

}

echo_message "$normalMessage"


查看完整回答
反對 回復 2021-04-16
?
手掌心

TA貢獻1942條經(jīng)驗 獲得超3個贊

您引用的報價有誤。

如果要模擬的行為echo,您的函數(shù)應接受多個參數(shù),并全部打印出來。目前,它僅評估第一個參數(shù),因此建議$*改用。您還需要將參數(shù)括在雙引號中以保護任何特殊字符:

echo_message() {    echo -e  "${lbGREEN}$*${NC}"}

特殊變量$*將擴展到所有參數(shù),并用空格(或更準確地說,是$ IFS的第一個字符,通常是空格字符)分隔。請注意,您幾乎總是想要"$@"而不是"$*",這是少數(shù)情況也是正確的,盡管如果IFS將其設置為非標準值,其語義稍有不同。

現(xiàn)在,該函數(shù)支持多個參數(shù),并以綠色打印所有參數(shù),并用空格分隔。但是,我建議您在調(diào)用函數(shù)時也引用該參數(shù):

echo_message "$normalMessage"

盡管$normalMessage現(xiàn)在可以正確處理其中的空格,但其他特殊字符(如)!仍需要加引號。


查看完整回答
反對 回復 2021-04-16
  • 3 回答
  • 0 關注
  • 360 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號