- - PR -
シェルスクリプト・2つのスペースを含む変数の扱い
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-10-24 22:55
シェルスクリプトを作成する際、変数に2つのスペースを持つ値を代入するにはどうすればいいのでしょうか。
例えば変数SPACEに「Jan△△1」という文字列を代入したい(△はスペース1文字分)時、 SPACE="Jan△△1" echo $SPACE としても、 結果は「Jan△1」となってしまいます。 どなたかご存じの方、よろしくお願いします。 | ||||||||
|
投稿日時: 2005-10-24 23:46
echoの方の変数も""で囲う
代入には成功しているけど、出力の時に連続した半角スペースが1つになっているのでは 全角スペースで誤魔化す事もできるかも? [ メッセージ編集済み 編集者: 水都 編集日時 2005-10-24 23:52 ] | ||||||||
|
投稿日時: 2005-10-25 11:02
もっと具体的に書きますと・・・
SPACE="Jan△△1" echo "$SPACE" echo $SPACE だと、展開された結果、 echo Jan△△1 となってしまい、引数を指定するときにスペースの数は関係ありませんから Jan△1 になってしまいます。 [ メッセージ編集済み 編集者: あんとれ 編集日時 2005-10-25 11:04 ] | ||||||||
|
投稿日時: 2005-10-25 14:16
bash -x scriptname.sh で実行してみると、この辺の違いが分かりやすく出力されます。 | ||||||||
|
投稿日時: 2005-10-25 16:51
こんにちは。
余談&ちょっとしたクイズ 1. file="a b c" touch "$file" は touch "a b c" と同じ ( 1ファイル生成もしくは更新 ) 2. files="a b c" touch $files は touch a b c と同じ ( 3ファイル生成もしくは更新 ) 3. files="a *" touch $files は touch a * と同じ ( * はワイルドカードなので、glob が効いて、現ディレクトリの全ファイル名に展開 ) Q. では、 files="〜" touch … ← files変数を使用 の形を利用して、 touch "a" "*" と同じ結果を得る ( glob を効かさず、* というファイルを生成もしくは更新する ) には? | ||||||||
|
投稿日時: 2005-10-26 19:40
RedHat9
Solaris
どっちか。 | ||||||||
|
投稿日時: 2005-10-26 22:59
皆さん、ご親切なご回答ありがとうございました。
そういえばOSを書くのを忘れてました。Solaris8を使ってます。 コブラさんが書いてくれた内容で解決です。 本当にありがとうございました。 これでしめさせていただきます。 |
1