• ベストアンサー

Kシェルでの文字型→数値型変換

こんにちは、 Kシェルをはじめたばかりなのですが 調べかたが悪かったのか、わからなかった為、質問させて頂きます。 文字型で年月日ばらばらに取得した数値を (年:2003、月:10、日:09) 改めて数値型に変換するには (年:2003、月:10、日:9) どうすれば良いのでしょうか。 Kシェルをはじめた、と書きましたがシェル自体経験が浅いです。 ご存知のかた、宜しければご教授下さい。

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

  • ベストアンサー
  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.1

Kシェル自体には文字列->数値変換の機能は無いと思われます。 exprコマンドを使用すれば算術結果が取得できますの以下のようにしてください。 -------------------------------- DD=09   #DDには文字として"09"が格納されている DD=`expr $DD + 0`   #強制的に算術演算させる echo $DD #DDには"9"が格納される ---------------------------------- これをコピー&ペーストする場合は、全角スペースを半角スペースに変えてください

satosaya
質問者

お礼

ありがとうございました^^ 計算することが出来ました。 まだまだ勉強が必要なのですが、ネットに詳しく解説しているところを見つけられず… 本に頼るしかないのでしょうか^^;;

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • nightowl
  • ベストアンサー率44% (490/1101)
回答No.2

こんばんは。Korn shell ですよね。 ksh および bash では、組み込みコマンドの typeset を使うことで 型の変換が行えるようです。 例えば変数を整数型として宣言するには 「typeset -i」または「integer」を頭につけます。 私の手元の pdksh(パブリックドメイン版 ksh クローン)では 「integer」は「typeset -i」のエイリアスでした。 $ day="09" $ print $day 09 $ typeset -i day=$day $ print $day 9 いかがでしょうか? なお、ksh の typeset -i では底を自由に設定できます。 「typeset -i8」のように。 参考書は今はオライリーの「入門Kornシェル」しかないようです。 http://www.oreilly.co.jp/BOOK/korn/ http://hp.vector.co.jp/authors/VA029091/zakki/ksh-1.html

参考URL:
http://www.cc.fuk.kindai.ac.jp/doc_link/Ja_JP/a_doc_lib/aixuser/usrosdev/related_info.htm#C756C06750mart
satosaya
質問者

お礼

ありがとうございました^^ 実際には使用しませんでしたが、このような方法もあるのだと勉強になりました。 本のほうもチェックしてみます (でも出版数少ないんですね…;買うのがちょっと躊躇います;;)

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • シェルの文字列取得について

    シェル(Bash)の文字列取得についてご教授ください。 文字列:  test(12345) 上記の文字列から"12345"(括弧内の数値部分)を取り出し、変数へ格納する場合、どのように行えばよいのでしょうか? ちなみに1桁だったり2けただったりと数値の桁は変動します。 よろしくお願いします。

  • シェルスクリプトでファイル内の数値文字列を数値として扱うには

    失礼します。 シェルスクリプトでファイル内のテキスト(数値文字列)を取得して、それを使って計算するにはどうすれば良いでしょうか? str:ファイル内のテキスト(数値文字列) res=$(( $str + 1 )) ・エラー ")syntax error: invalid arithmetic operator (error token is " よろしくお願いします。

  • EXCEL・月日のつもりで入力された文字列(数値)を年月日に変えるには

    A列に月日のつもりで入力された次のような文字列(又は数値)があります。これをB列に年月日に変換表示したいのですがその方法(関数)をご教示ください。(年月日の表示形式は不問。) なお、「年」を意味する文字列がないので、変換する場合、4.1から12.31までは2006年4月1日から同年12月31日まで、1.1から3.31までは2007年の1月1日から3月31日とします。 はじめデータ・区切り位置コマンドを使おうと思ったのですが、コンマの位置が不揃いでうまく行きませんでした。また入力した者が例えば3月1日を意味する文字列(または数値)をあるときは「3.1」あるときは「3.01」のようにまちまちに入力していて、それも作業が面倒な一因となっています。 A     B(変換表示したい年月日「例」) 4.8   2006/4/8 5.03   2006/5/3 7.28    2006/7/28 12.1    2006/12/1 1.07     2007/1/7 2.15    2007/2/15

  • Kシェルでの桁数取得

    こんにちは、 昨日に続いてまたKシェルの質問です。 タイトルのとおりなのですが、 変数にはいっている文字列が、1文字か2文字か、という判定は可能でしょうか。 1文字の場合、頭に0を連結し、 2文字の場合はそのまま通すというものを作りたいのですが、参考になるものが探せませんでした。 (ex.変数に9が入っていたら、09、11ならそのまま) ご存知の方、いらっしゃいましたらご教授願います。 (参考にできそうな本を教えて頂いたのですが、近所にはなく注文するとすると時間がかかってしまうので…;;)

  • 数値を文字列に変換する方法

    int rssi_dec = Convert::ToInt32("0X" + test02, 16); -----------(中略)----------------------- 一度、文字列だったものを数値に変換して、中略部分で計算をして、もう一度数値をHEXの 文字列に変換して、 String^ test このtestの中に代入したいと思っているのですが、どのようにすればよいのでしょうか? どうぞ、ご教授よろしくお願い致します。

  • access2000 クエリで文字列を数値に変換

    access2000 クエリで文字列を数値に変換 商品の管理DBをaccessで入力し、テーブルをexcelにエクスポートして並び替えやその他の編集をしています。 テーブルに「数量」というフィールドがあり、数字入力が主ですが、商品によっては「無制限」や「-」のように文字列を入力しなければならない為、「数量」は「数値型」ではなく「テキスト型」になっています。 excelへエクスポートした時に、「10」などは数値として認識させ、「無制限」などはそのままの文字列にしたいです。 クエリの式に「Val([数量])」としてみたところ、「10」は数値として変換されましたが、数値ではない文字列は全て「0」になりました。 また、「15,000」は「15」になりました。(カンマが文字列な為) これを 「10」→「10」(数値) 「無制限」→「無制限」(文字列) 「15,000」→「15000」(数値) にするような関数はありませんでしょうか。 excel2007のエラー処理(セルを選択した時に出る「!」で「数値に変換する」)と同じような挙動にしたいです。 宜しくお願いします。

  • Kシェルが動作しない。

    Kシェルが動作しない。 以下シェル自体ですが、単体では動作するのですが、メインのシェルから呼び出すと動作しなくなります。 動作しない条件としては、子シェルがメインシェルのwhile文の中に入れていると無限ループ???してしまいます。(for文やそれ以外では動作します。) なにかご存知でしたら、ご教授願います。 ・子シェル(Yes or Noを入力するまで無限ループする) #!/bin/ksh answer= echo "Do you add xxxx ? ---> [y/n]\c" while : do if [ "`echo -n`" = "-n" ]; then echo "$@\c" else echo -n "\@" fi read answer case "${answer}" in [yY] | yes | YES | Yes ) return 0 ;; [nN] | no | NO | No ) return 1 ;; * ) echo "Please enter y or n." ;; esac done ・メインシェル #!/bin/ksh while read line do /xxx/子シェル.ksh done < /xxx/zzz.txt 分かりづらいかも知れませんが、ご容赦願います。

  • 数値を文字列として結合した結果を数値に変換する

    お世話になっております。 プログラムで、文字を結合した結果を数値に変換する処理にて 処理を高速化できる記述方法があるか質問させてください。 ・やりたいこと  複数の数値を文字列として結合した結果を数値型に高速で変換したい。 ・現在のコード(考え方 C#にて)  今、以下のように数値変換しているのですが、  これ以外の書き方で、スマートな方法はないでしょうか?  ※結果がわかりやすいように変数はその都度宣言しています。 int i1 = "10"; int i2 = "2"; string sConcat = i1.ToString() + i2.ToString() ; // "102" // To Int int convertedInt = int.Parse( sConcat ) ; //102 // To Hex int convertedHex = Convert.ToInt32( sConcat , 16 ); // 0x102 数値を文字にして結合して・・・またキャストというのが 無駄なような気がしています。 すみませんが、良い方法があればご教授ください。

  • Kシェルの処理フローについて

    Kシェルの処理フローについて Kシェルにて以下のような処理を作成したいのですが、シェル初心者の為、 いい処理フローが思いつきません。 何かご存知でしたら、ご教授願います。 <やりたいこと> 以下のようなテキストがあるとします。 YAKUWARI XXXXXX USER USER01 YAKUWARI YYYYYY USER USER02 YAKUWARI ZZZZZZ USER USER03 YAKUWARI YYYYYY USER UESR04 YAKUWARI ZZZZZZ USER USER05 上記テキストを以下のように編集したいです。 YAKUWARI XXXXXX USER USER01 YAKUWARI YYYYYY USER USER02 USER USER04 YAKUWARI ZZZZZZ USER USER03 USER USER05 処理内容ですが、YAKUWARIが同じだった場合、ひとつにまとめたテキストを作成したい。 説明不足かも知れませんが、宜しくお願い致します。

  • Kシェルでgotoのような処理を作成したい。

    Kシェルでgotoのような処理を作成したい。 以下のような処理で、入力した文字が条件と一致しなかった場合、 再度、入力からやり直させるようにしたいです。 以下が例です。 NGになった場合、再入力を促したいです。 #!/bin/ksh echo "Input Moji ---> \c" read ans_Moji if [ ${ans_Moji == "入力した文字" ] ; then echo "OK" else echo "NG"  fi Windowsのようにgoto文があれば、簡単に出来るのですが、 シェルをはじめたばっかりでよく分かっておりません。 何かご存知でしたら、ご教授願います。