2016-06-16 9 views
0

次のコード行からユーザー入力を受け付けるbashスクリプトがあります。ユーザー入力スペースをダッシュ​​に変換する方法

Company A in Texas 

がどのように私はこのようなダッシュにスペースを変換するスクリプトを持つことができますスクリプトを実行しているユーザーが持つ質問に答える

echo "What is the customer name?" 
read hostname 

Company-A-in-Texas 

私はファイルでこれを行うための処理を実行することができますが、それはスクリプトを持つことになると、私はこれを行う空白を描いています。データをstdoutに送信して処理を実行するとします。ちょうど他のアイデアを得ようとする。

+0

これは、 'tr'で簡単に行われますが、この変換の目標は何ですか?空白をハイフンに置き換えた後、顧客名で何をするつもりですか?ファイルを作成する場合は、ユーザの入力を害さないためにもっと多くのことを行う必要があります。 –

答えて

3
$ read -p "What is the customer name? " custname 
What is the customer name? Company A in Texas 
$ custname=${custname// /-} 
$ echo "$custname" 
Company-A-in-Texas 

私は(「プロンプト」のために)read -pechoプラスreadを交換しhostnameが混乱につながる可能性があるコマンドの名前であるとして、あなたのパラメータの名前を変更しました。

スペースをダッシュ​​で置き換えるには、parameter expansionを使用しました。二重スラッシュに注意して、最初のスペースだけでなく、すべてのスペースが置き換えられていることを確認してください。

-pオプションはBashの特定およびPOSIXシェルに指定されていないことに注意してください。

+0

ユーザ入力にすでにダッシュが含まれているとどうなりますか?新しい書式設定は無視されますか?最終目標は、後でダッシュを使用してスクリプトでファイルを作成することです。しかし、もしユーザーが既にそれらを含んでいたら、私はこれを混乱させたくありません。 – user53029

+0

@ user53029ちょうどすべてのスペースをダッシュ​​で置き換えます。既存のダッシュは変更されません。 –

+0

@ user53029 http://meta.stackexchange.com/questions/167155/comments-asking-for-upvotes-acceptsを参照してください。 –

3

は、それはスクリプトでそれを追加

Company-A-in-Texas 

出力tr

tr " " "-" <<< "Company A in Texas" 

使用して行うことができる: - OPのニーズとして

#!/bin/bash 


echo "What is the customer name?" 
read hostname 
echo "$hostname" | tr " " "-" 

意志出力。

+0

'$ var'を設定している行を削除することができます。 – Kusalananda

+0

また、ユーザがシェルグロブビング文字を含むものを入力する場合は、最後の行で '$ hostname'を二重引用符で囲む必要があります。 – Kusalananda

+0

私はあなたにdownvoteしなかった。 – user53029

関連する問題