0

私はbashスクリプトを初めて使用し、次の方法を知りたいと思っていました。基本的に私は次の行を持っています

./application [channels] -> [message]

ここで、これらを区切り文字として「->」を使用して2つのbash変数に格納します。

すなわち:

$channels=チャネル$message=メッセージ

,さらに、および/またはスペースで区切られた複数のチャネルが存在する可能性があります。したがって、完全な行は次のようになります。

./application Channel1、Channel2、Channel3->これはメッセージです。

今bashで、私はチャネル配列に格納されたチャネル,を、メッセージ変数に格納されたメッセージと(そして、そこにある場合はスペースを取り除く)で区切って欲しいと思います。現時点で私がまとめることができるのはこれだけです。

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

誰かが私を助けることができますか?

4

1 に答える 1

0

メッセージにはスペースが含まれている可能性が高いため、引数は引用符で囲み、単純にしてください。

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

echo Message: ${2}

例:

anew@buddha:~/dev/so$ bash example.sh "channel1 channel2 channel3" "this is the message"
Channel: channel1
Channel: channel2
Channel: channel3
Message: this is the message
于 2013-02-18T05:19:59.103 に答える