タイトルのままですが
変数に入っている値の型が何なのかを確認する方法を教えて下さい。
int型ならint、stringならstringと返ってくるようなものはなにかないんでしょうか?
探しても上手く見つからずに難航しています。
よろしくお願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
Bashでdeclare
コマンドやtypeset
コマンドを使って整数や文字列、配列としてしたものを確認したいのであれば、declare
コマンドの-p
オプションを使うことができます。
bash
1# 変数iを整数として宣言 2declare -i i=1 3# iをインクリメントして表示 4i=i+1 5echo $i #=> 2 6 7# declare -pでどのように宣言されたかを確認 8declare -p i 9# declare -i i 10# と表示されるので、これを活用する
また、zshであれば${(t)foo}
のようにして変数の型を確認できます。
declare -i i=1 echo ${(t)i} # integer # と表示される s=hoge echo ${(t)s} # scalar # と表示される
POSIXに準拠したいのであれば、確認することどころかそもそも変数に型というものが存在しません。変数の内容が整数のようなものかどうか確認するなら、grep
などを使って、
i=0 if echo "$i" | head -n1 | grep '^[0-9]\+$' >/dev/null; then echo "integer" else echo "not integer" fi
とするといいんじゃないかと思います。
投稿2016/09/05 02:15
総合スコア545
0
ベストアンサー
Bashなどで拡張された場合についてはともかく、#!/bin/sh
の範囲内で考えるシェルスクリプトについては、データ型はありません。すべてが文字列です。
expr
はコマンド形式となっていますが、受け取るものは数値の文字列であって、数値そのものではありません。
与えられたデータが数値かどうかについては、正規表現でチェックする、あるいはexpr
やbc
に投げてみて計算できるかどうかチェックする、などの方法があります。
投稿2016/09/05 02:04
編集2016/09/05 02:06総合スコア145930
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
変数の属性は、man bash
の、組み込みコマンドのtypeset
declare
の所を見てください。
https://linuxjm.osdn.jp/html/GNU_bash/man1/bash.1.html
それとも、数字だけからなる文字列なのか、数字以外も含む文字列なのか、判断したいと言うことでしょうかね?
Bash
1if test -n "$A" -a -z "${A//[0-9]/}" 2then echo 数字だけ 3else echo 数字以外あり もしくは 空 4fi
(数字を全部削除して空だったら、元の文字列が数字だけだったと言うこと)
投稿2016/09/05 02:10
編集2016/09/05 02:23総合スコア85766
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。