• ベストアンサー

シェルでのスペースを考慮した処理方法

以下のようなシェルを実行しますと #! /bun/csh set A_CODE = `echo "   5555 " | awk -F\t {print $1}'` echo "$A_CODE" (5555の前後に複数のスペース文字有り) 結果--------------------------- 5555 ------------------------------- というようにスペースがなくなってしまいます。 なにか方法がありましたら教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • mko2
  • ベストアンサー率75% (3/4)
回答No.3

すでに解決済みかもしれませんが。。。 % cat test1.csh #!/bin/csh set A_CODE = "`echo '   5555 ' | awk -F\t '{print $1}'`" echo "$A_CODE" % % ./test1.csh   5555 %

bunarin
質問者

お礼

いえいえ未解決です。 "と`の使い方であること了解しました。 ありがとうございました。

その他の回答 (2)

noname#139383
noname#139383
回答No.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 のようになります。 お役に立てずにごめんなさい。 また何かわかったら回答させて頂きます。

bunarin
質問者

お礼

お手数掛けます。 変数に格納するときに、スペースが消去されることはこちらでも確認しました。 >お役に立てずにごめんなさい。 そんなことはありません。いろいろ情報をいただきました。 ありがとうございました。 しばらく閉じないでおきます。

noname#139383
noname#139383
回答No.1

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 と、ちゃんとスペースも表示されます。 はっきりとはわかりませんが、以前同じようにあるマシンでは行頭のスペースが表示され、 他のマシンでは行頭のスペースがなくなって表示されることがありました。 環境変数が原因ではないでしょうか。 同じ設定で試してみたいので、 よかったら実行環境の環境変数を教えて下さい。

bunarin
質問者

補足

回答ありがとうございます。 環境変数は以下のようになっています。 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 よろしくお願いします。

関連するQ&A