LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 965|回复: 10

请问如果把一个字符类型的变量转换为数值类型?

[复制链接]
发表于 2004-6-14 22:34:51 | 显示全部楼层 |阅读模式
请问如果把一个字符类型的变量转换为数值类型?
比如我用read a 对a输入了一个变量是2,那么我想用
echo $((3+$a))算出是5来,可是现在的a中是字符类型的如果先变成数值类型的呢?
有关其它变量类型之间的转换应该用什么命令呢? Thanks!
发表于 2004-6-14 23:18:24 | 显示全部楼层

回复: 请问如果把一个字符类型的变量转换为数值类型?

最初由 gao_linfeng 发表
请问如果把一个字符类型的变量转换为数值类型?
比如我用read a 对a输入了一个变量是2,那么我想用
echo $((3+$a))算出是5来,可是现在的a中是字符类型的如果先变成数值类型的呢?
有关其它变量类型之间的转换应该用什么命令呢? Thanks!

shell是弱类型的语言,没有字符与数值之分。
发表于 2004-6-15 09:00:22 | 显示全部楼层
补充: 可以用 declare -i 声明一个 integer 变量
 楼主| 发表于 2004-6-15 10:47:42 | 显示全部楼层
那象我这样的用read a 对a输入了一个变量是名叫172.168.1.1,然后这个脚本中再用ping $a能行吗?为何我的有错误?
发表于 2004-6-15 10:53:10 | 显示全部楼层
可以的呀 ~~
/home/lee#read a;ping -c1 $a
172.168.1.1
PING 172.168.1.1 (172.168.1.1) 56(84) bytes of data.
64 bytes from 172.168.1.1: icmp_seq=1 ttl=99 time=589 ms

--- 172.168.1.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 589.092/589.092/589.092/0.000 ms

你什么错误信息呀?
发表于 2004-6-15 10:53:43 | 显示全部楼层
ip 地址不是 integer 类型, 不能用 declare -i
 楼主| 发表于 2004-6-15 10:56:42 | 显示全部楼层
另外我事先定义了这个变量并且给了值,脚本如下:
a=192.168.1.1
b=5
read "input IP"
a
read "input mumber"
b
ping $a -c $b,可是这样是有错误的。

我的本意是可以让用户输入一个ip,并输入要ping的次数,如果不输入默认就是192.168.1.1并且ping五次

看看有什么错误吗?
发表于 2004-6-15 11:06:04 | 显示全部楼层
也许这样会好些
  1. a=192.168.1.1
  2. b=1
  3. echo -n "input IP:"
  4. read ip
  5. echo -n "input mumber"
  6. read count
  7. if [[ $ip == "" && $count == "" ]];then
  8.         ping -c$b $a
  9. else
  10.         ping -c$count $ip
  11. fi
复制代码

错误,就是不要起重复的变量名
发表于 2004-6-15 11:14:31 | 显示全部楼层
这样使用默认值:

  1. ip=
  2. count=
  3. read ip
  4. read count
  5. ping ${ip:-192.168.1.1} -c ${count:-5}
复制代码
发表于 2004-6-15 11:16:39 | 显示全部楼层
这样亦可:

  1. ip=
  2. count=
  3. read ip
  4. read count
  5. ping ${ip:=192.168.1.1} -c ${count:=5}
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表