2013-02-18 124 views
0

我是bash腳本的新手,想知道如何執行以下操作。基本上我有以下線基本的bash腳本參數

./application [channels] -> [message] 

我想將這些存儲到2'bash變量與' - >'作爲分隔符。

即:

$頻道=頻道 $消息=消息

此外,可以是由,和/或空格分隔多個信道。所以整行應該是這樣的:

./application Channel1,Channel2,Channel3 - >這是一條消息。

現在在bash中,我希望存儲在通道數組中的通道由,分開(並且如果存在空格,則除去空格)並將消息存儲在消息變量中。我現在唯一可以放在一起的是:

#!/bin/bash 
for i 
    do 
     echo $i 
    done 

有人可以幫我嗎?

+0

不能使用' - >'作爲命令行的一部分(除非你引用它或轉義'>'),因爲bash會將'> message'部分解釋爲輸出重定向,並且不會將它傳遞給腳本。 – 2013-02-18 06:51:06

回答

0

因爲你可能在你的信息空間,讓你的論據報價,而你保持簡單:

for CHANNEL in $(echo $1 | tr " ," "\n") 
do 
    echo Channel: ${CHANNEL} 
done 

echo Message: ${2} 

例子:

[email protected]:~/dev/so$ bash example.sh "channel1 channel2 channel3" "this is the message" 
Channel: channel1 
Channel: channel2 
Channel: channel3 
Message: this is the message 
+0

非常感謝你的回答。 有沒有辦法做一個使用檢查,以便它只接受這個命令,如果它的格式爲 example.sh「」「」 - 即它需要「」並且通道之間還有空格分開。 – 2013-02-18 21:34:56

+0

還有 - 如果用戶有評論,其中包括「」「」字符..不會破壞代碼..即 bash example.sh「channel1 channel2」「這是你的評論」 – 2013-02-18 21:38:54

+0

你可以用' \「''所以,用參數''channela channelb channelc'」這是一個\「message \」「'對於您將看到的第二個參數'消息:這是一個」消息「 – Anew 2013-02-18 23:21:11