- ベストアンサー
シェルでのスペースを考慮した処理方法
以下のようなシェルを実行しますと #! /bun/csh set A_CODE = `echo " 5555 " | awk -F\t {print $1}'` echo "$A_CODE" (5555の前後に複数のスペース文字有り) 結果--------------------------- 5555 ------------------------------- というようにスペースがなくなってしまいます。 なにか方法がありましたら教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
すでに解決済みかもしれませんが。。。 % cat test1.csh #!/bin/csh set A_CODE = "`echo ' 5555 ' | awk -F\t '{print $1}'`" echo "$A_CODE" % % ./test1.csh 5555 %
その他の回答 (2)
わざわざ環境変数を送っていただき、ありがとう ございました。 LANG=jaに設定してみましたが、結果は同じでした。 どうも変数に格納するときに、スペースが消去される みたいです。 /export/home/test% echo " 5555 " | awk -F\t '{print $1}' 5555 はスペースもちゃんと表示されますが、awkを挟まず単純に 頭にスペースのついた文字列を入れると、 /export/home/test% set A_CODE = " 5555 " /export/home/test% echo $A_CODE 5555 のようになります。 お役に立てずにごめんなさい。 また何かわかったら回答させて頂きます。
お礼
お手数掛けます。 変数に格納するときに、スペースが消去されることはこちらでも確認しました。 >お役に立てずにごめんなさい。 そんなことはありません。いろいろ情報をいただきました。 ありがとうございました。 しばらく閉じないでおきます。
awk -F\t {print $1}'` {printの前に ' が抜けていたので付け加えて、下記コマンドを実行しました。 /export/home/test% set A_CODE = `echo " 5555 " | awk -F\t '{print $1}'` /export/home/test% echo $A_CODE 5555 と、ちゃんとスペースも表示されます。 はっきりとはわかりませんが、以前同じようにあるマシンでは行頭のスペースが表示され、 他のマシンでは行頭のスペースがなくなって表示されることがありました。 環境変数が原因ではないでしょうか。 同じ設定で試してみたいので、 よかったら実行環境の環境変数を教えて下さい。
補足
回答ありがとうございます。 環境変数は以下のようになっています。 PATH=/usr/ucb:/usr/bin:/usr/etc:/usr/sbin:/usr/ccs/bin:/opt/SUNWspro/bin/:/usr/local/bin TERM=vt100 TZ=Japan SHELL=/bin/csh LANG=ja EDITOR=vi OPENWINHOME=/usr/openwin よろしくお願いします。
お礼
いえいえ未解決です。 "と`の使い方であること了解しました。 ありがとうございました。