Linux shell中如何把用户输入的一串数字(如电话号码)从字符串转换成数值使它可以进行计算

作者&投稿:斐畏 (若有异议请与网页底部的电邮联系)
shell中将字符串转换成数字~

1、数字类型转字符类型
数字类型转字符类型,是比较常见的,也是必须容易实现的。大多时候系统能够自动进行转换,如:
aa=$((1+1));echo $aa
变量aa赋值为整数2,但echo 输出时已被当成字符型。当然也可以强制进行转换,如:
echo $aa""
通过与空字符串进行连接,强化将变量aa转化成了字符型。

2、上面的方法也同样适用于各种浮点数类型转字符类型。如:
aa=$(awk 'BEGIN{print 7.01*5-4.01 }');
echo $aa;
echo $aa"";
变量aa是算式(7.01*5-4.01 )的值,是个浮点数,可看到成功转化成字符。

3、字符类型转数值类型
反过来,字符类型转数值类型也是可以实现的。
如:
aa=12;
aa=$(($a+4));
echo $aa;
在shell中,给变更赋值中的数字默认是被当作字符串的。

4、日期型转数值
日期型转数值主要是通过date命令来实现来的。
命令:date -d "2018-07-24" +%s
参数“%s”的作用是将-d参数后的日期转换成自UTC 时间 (1970-01-01 00:00:00) 以来所经过的秒数。

5、日期型转字符
要日期型转数值差不多,也是通过date命令来实现来的
date -d "2018-07-24 12:00:25" +%Y-%m-%d
将-d参数后的时间,按照“%Y-%m-%d”格式输入字符串。

6、数值转日期
日期型的转换,都可以通过date命令来完成。
date -d @1538617600 +%Y-%m-%d
通过-d将自UTC 时间 (1970-01-01 00:00:00) 以来所经过的1538617600 秒后的时间以格式字符输出。

使用shell内建命令let就行
let t1=a*60+b或者为了美观加点空格:
let t1="a * 60 + b"let t1="$a * 60 + $b"$(( ))也很方便,缺点是非通用,可移植性不强,仅bash支持,不属于POSIX标准范畴;而且会新建shell执行,效率上不如直接使用shell内建命令高(当然,如果脚本不大,这种效率上的差别几乎可以忽略)。

shell脚本对变量类型没有限制,你输入数字,phone就可以直接当数值型来用。
只是这里的判断表达式中不支持直接正则匹配,你要用grep, sed, awk这些支持正则的工具才行,然后用 $? 取得执行状态来判断是否匹配成功。

read -p "Phone Number (xxxxxxxx):" phone
echo "$phone" | egrep "^[0-9]{8}$" >/dev/null
if [ $? -eq 0 ]; then
echo ....

获取要转换的字符串,直接当数值计算就行了

你不用转换,shell下你当它是字符串它就是字符串,你当它数字它就是数字.


福田区15584864380: 在Linux中怎么把用户添加到组中 -
刘古安塞: usermod -g groupname username #修改用户初始化用户组,用户组id对应/etc/passwd的第4栏内容usermod -G groupname1,groupname username #修改用户能够支持的用户组

福田区15584864380: linux系统shell脚本如何切换用户呢? -
刘古安塞: sudo设置下某条命令的权限就好了 或者直接su用户然后再改回来

福田区15584864380: linux里怎样让一个用户没有登录系统的权限 -
刘古安塞: 第一种情况:还未建立用户时,可以使用以下命令1,groupadd groupname useradd -g groupname username -s /bin/false //-s为默认shell,不给shell,也就不能登录2,groupadd groupname useradd -g groupname username -s /sbin/nologin //-s为默...

福田区15584864380: Linux群组中怎么强制删除用户 -
刘古安塞: linux上基本的用户操作命令如下: 超级用户root 可以建立别的用户useradd huayu : 添加用户 huayupasswd huayu : 修改用户huayu的密码logout : 退出重新登录userdel huayu : 删除用户huayuuserdel -r huayu : 删除用户以及用户主目录因此,你只需要userdel username (username 是你要删除的帐户名字)另外,对于linux的基础操作,可以参考鸟哥的linux私房菜,不用仔细看,用到不懂的就去查.

福田区15584864380: linux中如何切换用户身份 -
刘古安塞: su(super user) 功能说明:变更用户身份.语法:su [-flmp][--help][--version][-][-c <指令>][-s <shell>][用户帐号] 补充说明:su可让用户暂时变更登入的身份.变更时须输入所要变更的用户帐号与密码.参数: -c<指令>或--command=<指令>执行...

福田区15584864380: 如何更改linux文件的拥有者及用户组 -
刘古安塞: 首先 是你的帐号有root权限. 终端输入命令chown 用户名称 冒号:用户组 加文件名.

福田区15584864380: linux中怎么改变一个文件的拥有者和用户组 -
刘古安塞: 一、基本知识 在Linux中,创建一个文件时,该文件的拥有者都是创建该文件的用户.该文件用户可以修改该文件的拥有者及用户组,当然root用户可以修改任何文件的拥有者及用户组.在Linux中,对于文件的权限(rwx),分为三部分,一部分...

福田区15584864380: linux怎样把用户放进群组里? -
刘古安塞: 给ubuntu新手一个建议吧 在最上面左上角 系统->"帮助和支持"以及"关于ubuntu" 从那儿很多基本的问题你都可以找到答案 包括基本的命令行等等 学过了那个文档之后 ubuntu的基本使用没问题拉

福田区15584864380: linux中 用shell命令批量新建用户的方法建立用户 k1 k2 k3 k4 k5 登录口令统一设置为12345 求详细操作步骤 -
刘古安塞: 可以建立一个shell脚本处理,脚本内容如下,这只是个简单的脚本,没有对用户设置组和家目录,也没有判断用户是否存在,实际应用中需要注意处理:#!/bin/bash#设置初始密码 kpasswd="12345" for kuser in k1 k2 k3 k4 k5 do useradd $kuser echo "$kuser:$kpasswd" | chpasswd echo "用户$kuser建立成功,初始密码是$kpasswd" done

福田区15584864380: linux中的shell编程编写创建用户的程序 -
刘古安塞: 创建5个用户k1~k5,口令都设置为12345:#!/bin/bash#设置初始密码 kpasswd="12345" for kuser in k1 k2 k3 k4 k5 do useradd $kuser echo "$kuser:$kpasswd" | chpasswd echo "用户$kuser建立成功,初始密码是$kpasswd" done参考:http://wenwen.sogou.com/z/q781829518.htm

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网