- 浏览: 129946 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (101)
- nanocube配置部署,计算机 (1)
- crontab 执行不了 (2)
- casandra cqlsh 连接 (1)
- java (2)
- python,linuxshell,crontab (1)
- ptython (15)
- cassandra (4)
- linux mount 不了 (2)
- mongodb (5)
- svnmanager (2)
- linux (22)
- samba (1)
- pyspider (1)
- subversion (1)
- svn (2)
- nginx (4)
- python (4)
- phantomJS (1)
- vim (1)
- 编码 (1)
- windows (1)
- linux,u盘不能写 (1)
- wxpython (1)
- pyinstaller安装 (1)
- jumpserver (1)
- MySQL (3)
- 正则表达式 (1)
- perl: warning: Please check that your locale settings: (1)
- redmine (1)
- dns (1)
- atom中文显示成方框 (1)
- vpn (1)
- openvpn (1)
- vnc (1)
- matplotlib (1)
- zeppelin (1)
- spark (2)
- 全志编译环境安装 (1)
- aapt (1)
- ubuntu (1)
- eclipse (1)
- ssdb (1)
- https (1)
- 安装apr-util (1)
- alfresco (1)
- maven (1)
- springboot jpa (0)
最新评论
-
jacklin2015:
...
scrapy 抓的段子里的 \n 去不掉 -
jacklin2015:
''.join(sel.css("div.item- ...
scrapy 抓的段子里的 \n 去不掉 -
jacklin2015:
...
linux fdisk mount -
jacklin2015:
...
python mongodb 正则查询
4.8 定义整型变量命令declare -i
用带选项-i 的declare 命令,可以使变量具有整数(integer)属性。Bash 本质上只有字符型变量,但通常也可以说:定义整型变量。
例如,希望得到45+20 的整数运算结果:
$ M=45+20
$ echo $M
45+20
执行M=45+20 之后,M 的值为字符串45+20 , 而不是希望得到的65 。执行M=$((45+20),或let M=45+20 才能得到65。如果事先声明变量是整型数,就不必使用$((…))或者let。见下例:
$ declare -i K
$ K=45+20
$ echo $K
65
再看一个例子。C 被声明为整型变量,所以C 的值为15+30=45;D 没有被声明为整型,所以D 的值是字符串15+30,而不是期望得到的45:
$ A=15 B=30
$ declare -i C=$A+$B
$ D=$A+$B
$ echo C=$C, D=$D
C=45, D=15+30
如果整型数被赋值为字符或不带空格的字符串时,系统不会报错,并且整型变量实际被赋值为0:
$ declare -i M # 声明整型变量M
$ M="web" # 变量M 被赋值为无空格的字符串
$ echo $M
0 # 显示M 的值为0
整型数被赋值为带空格的字符串时,系统将报错:
$M="web site" # 变量M 被赋值为带空格的字符串,出错
bash: web site: syntax error in expression (error token is "site")
前面提到的数都是十进制数,Bash 支持其他进制的数,支持的范围是从二进制到六十四进制。非十进制数赋值的格式为:
变量=基数#数值
基数的取值范围为2 到64,常用的有二进制、八进制、十六进制等。例如:
$ declare -i x
$ x=2#110 # 二进制的110 赋给x
$ echo $x
6 # 二进制的110 就是十进制的6
$ x=8#16 # 八进制的16 赋给x
$ echo $x
14 # 八进制的16 就是十进制的14
$ x=16#2A # 十六进制的2A 赋给x
$ echo $x
4 2 # 十六进制的2A 就是十进制的42
以0 开头的数表示八进制数,以0x 开头的数表示十六进制数,这一点与C 语言一致。例如:
$ x=025 # 八进制的25 赋给x
$ echo $x
21 # 八进制的25 就是十进制的21
$ x=0x25 # 十六进制的25 赋给x
$ echo $x
37 # 十六制的25 就是十进制的37
赋值时,某一位数大于基数的话,赋值将失败。例如:
$ x=029 # 以0 开头的为八进制数,数字只能取0 到7,9 超出基数,赋值失败
bash: 029: value too great for base (error token is "029")
$ x=16#2G # 十六进制数字只能取0 到9、A 到F,G 超出基数,赋值失败
bash: 16#2G: value too great for base (error token is "16#2G")
用带选项-i 的declare 命令,可以使变量具有整数(integer)属性。Bash 本质上只有字符型变量,但通常也可以说:定义整型变量。
例如,希望得到45+20 的整数运算结果:
$ M=45+20
$ echo $M
45+20
执行M=45+20 之后,M 的值为字符串45+20 , 而不是希望得到的65 。执行M=$((45+20),或let M=45+20 才能得到65。如果事先声明变量是整型数,就不必使用$((…))或者let。见下例:
$ declare -i K
$ K=45+20
$ echo $K
65
再看一个例子。C 被声明为整型变量,所以C 的值为15+30=45;D 没有被声明为整型,所以D 的值是字符串15+30,而不是期望得到的45:
$ A=15 B=30
$ declare -i C=$A+$B
$ D=$A+$B
$ echo C=$C, D=$D
C=45, D=15+30
如果整型数被赋值为字符或不带空格的字符串时,系统不会报错,并且整型变量实际被赋值为0:
$ declare -i M # 声明整型变量M
$ M="web" # 变量M 被赋值为无空格的字符串
$ echo $M
0 # 显示M 的值为0
整型数被赋值为带空格的字符串时,系统将报错:
$M="web site" # 变量M 被赋值为带空格的字符串,出错
bash: web site: syntax error in expression (error token is "site")
前面提到的数都是十进制数,Bash 支持其他进制的数,支持的范围是从二进制到六十四进制。非十进制数赋值的格式为:
变量=基数#数值
基数的取值范围为2 到64,常用的有二进制、八进制、十六进制等。例如:
$ declare -i x
$ x=2#110 # 二进制的110 赋给x
$ echo $x
6 # 二进制的110 就是十进制的6
$ x=8#16 # 八进制的16 赋给x
$ echo $x
14 # 八进制的16 就是十进制的14
$ x=16#2A # 十六进制的2A 赋给x
$ echo $x
4 2 # 十六进制的2A 就是十进制的42
以0 开头的数表示八进制数,以0x 开头的数表示十六进制数,这一点与C 语言一致。例如:
$ x=025 # 八进制的25 赋给x
$ echo $x
21 # 八进制的25 就是十进制的21
$ x=0x25 # 十六进制的25 赋给x
$ echo $x
37 # 十六制的25 就是十进制的37
赋值时,某一位数大于基数的话,赋值将失败。例如:
$ x=029 # 以0 开头的为八进制数,数字只能取0 到7,9 超出基数,赋值失败
bash: 029: value too great for base (error token is "029")
$ x=16#2G # 十六进制数字只能取0 到9、A 到F,G 超出基数,赋值失败
bash: 16#2G: value too great for base (error token is "16#2G")
发表评论
-
安装软件
2018-12-07 15:41 338------------------------------- ... -
序列号
2018-04-19 11:42 529YC592-8VF55-M81AZ-FWW5T-WVRV0 -
No package ×××××× available. 错误:无须任何处理
2016-11-05 12:16 3426yum install epel-release -
QQ的文件路径
2016-03-23 16:56 815~/.deepinwine/qqintl/drive_c/Pr ... -
查看硬件温度
2016-03-22 13:18 797# sudo apt-get install lm-senso ... -
parted
2016-03-19 14:05 799parted 和 fdisk 的 区别 ,parted 的分区 ... -
linux命令-mknod
2016-02-15 14:42 622个人觉得linux的软件设计思想异常强大,比如把所有的设备都当 ... -
linux命令-rsync
2016-01-11 14:42 472rsync 常用命令 rsync -avz root@ ... -
linux命令-at 定时执行任务
2015-12-30 19:25 672#atq 列出 at 的任务 #atrm n 删除任务号为n的 ... -
调整nice 值
2015-12-28 16:06 8741。改变一个已经存在的进程的nice值 # renice -1 ... -
crontab -e 报permission deneied
2015-12-21 15:44 689原因是 crontab 属于root组,本来因该属于cront ... -
shell 常用命令
2015-12-07 09:53 5121。read -s -p "input passwd ... -
sudo: must be setuid root
2015-12-05 12:16 781执行sudo 提示 sudo: must be setuid ... -
ssh 登录的提示界面定制
2015-12-04 19:47 1758ssh 登录欢迎界面如下: Welcome to Ubuntu ... -
添加用户并加入组
2015-12-04 16:12 623usermod -a -G groupA user #把 us ... -
unix2dos 和 dos2unix
2015-12-04 11:43 600windows 的 doc 文件 是以 “/n /r” 换行的 ... -
误删/usr/bin 下的所有文件
2015-12-02 17:34 3288误删/usr/bin 下的所有文件 咋办? 这里面的文件都是一 ... -
timestamp to date [ 及date 相关的 命令]
2015-11-26 11:46 758linux shell convert timestamp t ... -
mount -a failed
2015-11-18 11:21 921$ mount -a 输出 /dev/sdc1 alread ... -
为什么我在tty1下中文显示不出来
2015-11-13 10:11 1044先安装 sudo apt-get install fbterm ...
相关推荐
可以对已定义的整型变量执行算术运算(如果变量未被定义为整型变量, 内置的let命令也允许算术操作。见本节let命令部分)。如果给整型变量赋一个浮点数值,则bash将报告语法错误。数字可以用不同基数的数字表示,如 二...
3. 全局变量:在Shell脚本内部定义的变量通常是全局变量,它们的作用域限于定义它们的脚本内部。全局变量从定义点开始生效,直到脚本结束或被显式删除。 4. 局部变量:在函数内部使用`local`关键字定义的变量,其...
这些命令可以用来声明只读变量(`-r`),整型变量(`-i`),数组(`-a`),关联数组(`-A`),显示函数名和内容(`-f`),仅显示函数名(`-F`),环境变量(`-x`),将变量转换为小写(`-l`)或大写(`-u`)。...
4. 变量类型:Shell没有严格的数据类型,但可以通过`typeset`或`declare`命令指定变量为整型、浮点型或数组。 三、特殊符号 1. `$`:引用变量,如`echo $var`。 2. `#`:用于注释,从符号后的字符开始到行尾。 3. `...
例如,你可以使用`-i`选项声明一个整型变量,`-a`选项声明一个数组,`-r`选项声明一个只读变量,而如果不带任何参数,`declare`会显示所有已定义的Shell变量及其值。 1. **整型变量(-i)**:当你使用`-i`选项声明一...
- **算术运算**: 使用`$((expression))`进行整型变量的数学计算。 - 示例: `let result=10+5` 或者 `result=$((10+5))` - **算术扩展**: 在表达式中使用变量时,可以直接在括号内使用变量名,而无需使用`$`。 **6....
##### 整型变量的算术运算和算术扩展 - **算术运算**:可以使用内置命令`expr`或者`let`来进行算术运算。 - **示例**: ```bash a=5 b=3 c=$((a + b)) echo $c # 输出:8 ``` - **算术扩展**:使用`$(...
1. **变量**: Shell脚本中可以定义各种类型的变量,如字符串变量、整型变量等。 2. **控制结构**: 包括条件语句(if-else)、循环(for、while)等。 3. **函数**: 可以定义函数来封装一组相关的命令或操作。 4. **输入...
本文将深入讲解如何定义和调用Shell函数,以及处理函数中的参数传递和返回值。 1. **Shell函数定义格式**: Shell函数的基本定义格式如下: ```shell [function] function_name() { function_body [return int...
varprefix@}**: 通过变量名前缀字符搜索已定义的变量。 - 示例: ```bash var1=11 var2=12 var3=13 echo "${!v@}" # 输出: var1 var2 var3 ``` #### 三、字符串操作 Shell还提供了一系列内置的操作来处理...
4. **变量和引用**:学习如何声明和使用变量,理解字符串变量、整型变量和数组变量的特性,以及转义字符和引用($、`、\)的用法。 5. **流程控制**:掌握条件语句(`if...then...fi`、`case`)和循环结构(`for`、...
Shell图形化总结不仅涉及到了命令组、重定向、管道、进程替换、信号捕获、条件测试、函数定义和脚本调试等关键知识点,还涵盖了如何创建临时文件、处理文本、条件判断、循环结构、整型比较、字符串比较以及脚本中...
3,新建全局变量 struct shell_input serial_shell ; 并初始化 SHELL_INPUT_INIT(&serial;_shell ,usart_puts);初始化输入缓存和输出交互; 4,串口接收到一整包函数后,调用 shell_input(&serial;_shell , packet ,...
- `export`用于定义环境变量,`NAME=51Testing`定义局部变量,`declare`用于声明变量类型,如`declare -i NUM`定义整型变量。 - `vi`是文本编辑器,有命令模式和插入模式,`/`用于查找,`:w`, `:wq`, `:q`, `:q!`...
declare命令用于定义变量的类型,例如:declare -i test=1+2,这将定义一个整型变量test,并赋值为1+2。 四、read命令 read命令用于从标准输入读取变量的值,例如:read fileuser,这将读取fileuser的值。然后可以...
1. 变量:Shell允许定义和使用变量,包括字符串变量、整型变量和数组变量。变量赋值不需声明类型,直接使用等号(=)进行赋值。 2. 输入/输出重定向:通过>`>`和`>>`操作符,可以将命令输出重定向到文件,实现数据...
- 通过赋值或利用`declare -i`声明整型变量。 - **常量定义** - 定义不变的值,作为程序中的固定参考。 - **变量存在检查** - 判断变量是否已定义,确保程序稳健。 - **自定义 Bash 环境** - 修改配置文件如`....
数据类型方面,shell并不区分整型、浮点型,所有数值都视为字符串处理,但可以进行基本的算术运算。 2. **流程控制**:shell脚本中的流程控制包括条件语句(if-else)和循环结构(for、while)。例如,if语句用于...
2.2.2 变量定义、取消定义和赋值: - 本地变量:直接定义,如`myvar=value`;取消定义:`unset myvar`。 - 环境变量:`export myvar=value`或`declare -x myvar=value`。 2.2.3 数据类型: Shell不需要在定义变量时...
可以使用`declare`或`typeset`命令来声明变量的类型,例如:`declare -i var=10`声明一个整型变量。 ### 四、条件测试 #### 1. Test结构 `test`命令用于进行各种比较操作,例如:`[ "$a" = "$b" ]`用于测试两个...