shell 判断变量类型的几种方法

shell 判断变量类型的几种方法

方法一

脚本如下

#!/usr/bin/env bash

function check(){
    local a="$1"
    printf "%d" "$a" &>/dev/null && echo "integer" && return
    printf "%d" "$(echo $a|sed 's/^[+-]\?0\+//')" &>/dev/null && echo "integer" && return
    printf "%f" "$a" &>/dev/null && echo "number" && return
    [ ${#a} -eq 1 ] && echo "char" && return
    echo "string"
}

echo ". is" $(check ".")
echo "1 is" $(check "1")
echo ".1 is" $(check ".1")
echo "1. is" $(check "1.")
echo "1234 is" $(check "1234")
echo "1.234 is" $(check "1.234")
echo "1.2.3.4 is" $(check "1.2.3.4")
echo "a1234 is" $(check "a1234")
echo "abc is" $(check "abc")
echo "a is" $(check "a")
echo "1e+2" $(check "1e+2")
echo "1.e+2" $(check "1e+2")
echo ".1e+2" $(check "1e+2")
echo "-1" $(check "-1")
echo "-1.2" $(check "-1.2")
echo "-a" $(check "-a")
echo "0x1f" $(check "0x1f")
echo "0x1H" $(check "0x1H")
echo "0333" $(check "0333")
echo "0999" $(check "0999")
echo "+003" $(check "+003")
echo "+003.3" $(check "+003.3")

输出结果如下:

. is char
1 is integer
.1 is number
1. is number
1234 is integer
1.234 is number
1.2.3.4 is string
a1234 is string
abc is string
a is char
1e+2 number
1.e+2 number
.1e+2 number
-1 integer
-1.2 number
-a string
0x1f integer
0x1H string
0333 integer
0999 number
+003 integer
+003.3 number

方法二

#!/bin/bash
#

echo $a|grep [a-zA-Z]>/dev/null
if [ $? -eq 0 ];then
echo "string"
else
echo "data"
fi

方法三

#!/bin/bash
#

if [[ $a != *[^0-9]* ]]&&[[ $a != 0* ]]
then
echo $a is data
else
echo $a is string
fi
### 回答1: 可以使用以下语句来判断变量是否有值: if [ -n "$变量名" ]; then echo "变量有值" else echo "变量为空" fi 其中,-n 表示判断变量是否非空,"$变量名" 表示将变量名作为字符串进行处理。如果变量非空,则输出“变量有值”,否则输出“变量为空”。 ### 回答2: 在Shell脚本中,判断一个变量是否有值可以通过检查变量的长度来实现。当变量有值时,其长度大于0,否则长度为0。 我们可以使用if语句来判断一个变量是否有值。例如,假设我们有一个变量`var`,我们可以使用以下代码来判断它是否有值: ``` if [ -n "$var" ];then echo "变量var有值" else echo "变量var无值" fi ``` 在上述代码中,`-n`选项用于检查字符串的长度是否大于0。如果`var`有值,则`-n`选项返回True,打印"变量var有值";否则返回False,打印"变量var无值"。 此外,我们还可以使用另一种简写的形式来完成判断。例如: ``` if [ "$var" ];then echo "变量var有值" else echo "变量var无值" fi ``` 在这种情况下,如果`var`有值,则条件为True,打印"变量var有值";否则条件为False,打印"变量var无值"。 综上所述,通过检查变量的长度或使用条件判断语句,我们可以判断一个变量是否有值。 ### 回答3: 在shell脚本中,我们可以通过多种方式来判断一个变量是否有值。 1. 使用条件语句:使用if语句可以判断变量是否有值。例如,通过检查变量的长度是否为0来判断变量是否有值。示例代码如下: ```shell if [ -n "$var" ]; then echo "变量有值" else echo "变量为空" fi ``` 2. 使用默认值:可以使用变量的默认值来判断变量是否有值。如果变量为空,则使用默认值。示例代码如下: ```shell default_value="默认值" result="${var:-$default_value}" if [ "$result" == "$default_value" ]; then echo "变量为空" else echo "变量有值" fi ``` 3. 使用默认值和赋值:在变量为空时,可以使用默认值并将其赋值给变量。示例代码如下: ```shell default_value="默认值" var="${var:-$default_value}" if [ "$var" == "$default_value" ]; then echo "变量为空" else echo "变量有值" fi ``` 以上是在shell脚本判断变量是否有值的几种常见方法。根据实际应用场景和需求,可以选择适合的方式来判断变量是否为空。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值