bash-shell高级编程-变量的赋值
变量的赋值
=
赋值操作(前后都不能有空白)
注意:因为=
和-eq
都可以用作条件测试操作,所以不要与这里的赋值操作相混淆。
=
既可以用作条件测试操作,也可以用于赋值操作,这需要视具体上下文而定
简单的变量赋值
#!/bin/bash
# "裸体"变量
echo
# 变量什么时候是"裸体"的, 比如前边少了$的时候?
# 当它被赋值的时候, 而不是被引用的时候.
# 赋值
a=879
echo "The value of \"a\" is $a."
# 使用'let'赋值
let a=16+5
echo "The value of \"a\" is now $a."
echo
# 在'for'循环中(事实上, 这是一种伪赋值):
echo -n "Values of \"a\" in the loop are: "
for a in 7 8 9 11
doecho -n "$a "
done
echo
echo
# 使用'read'命令进行赋值(这也是一种赋值的类型):
echo -n "Enter \"a\" "
read a
echo "The value of \"a\" is now $a."
echoexit 0
简单又不简单的的两种类型的变量赋值
#!/bin/bash
a=23
# 简单的赋值
echo $a
b=$a
echo $b
# 现在让我们来点小变化(命令替换).
a=`echo Hello!`
# 把'echo'命令的结果传给变量'a'
echo $a
# 注意, 如果在一个#+的命令替换结构中包含一个(!)的话,
#+ 那么在命令行下将无法工作.
#+ 因为这触发了Bash的"历史机制."
# 但是, 在脚本中使用的话, 历史功能是被禁用的, 所以就能够正常的运行.
a=`ls -l`
echo $a
echo
echo "$a"
exit 0
使用$(...)
机制来进行变量赋值(这是一种比后置引用(反引号`)更新的一种方法). 事实上这两种
方法都是命令替换的一种形式.
# From /etc/rc.d/rc.local
R=$(cat /etc/redhat-release)
arch=$(uname -m)
bash
变量是不区分类型的
不像其他程序语言一样,bash
并不区分变量的类型,本质上bash
变量都是字符串。实际的作用依赖于上下文,Bash
也允许比较操作和整数操作,其中的关键因素就是,变量中的值是否只有数值。
#!/bin/bash
# int-or-string.sh: 整型还是字符串?a=2334 #整型.
let "a += 1"
echo "a = $a " # a = 2335
echo # 还是整型.
b=${a/23/BB}
# 将"23"替换成"BB".
# 这将把变量b从整型变为字符串.
echo "b = $b"
# b = BB35
declare -i b
# 即使使用declare命令也不会对此有任何帮助.
echo "b = $b"
# b = BB35
let "b += 1"
# BB35 + 1 =
echo "b = $b"
# b = 1
echo
c=BB34
echo "c = $c"
# c = BB34
d=${c/BB/23}
# 将"BB"替换成"23".
# 这使得变量$d变为一个整形.
echo "d = $d"
# d = 2334
let "d += 1"
# 2334 + 1 =
echo "d = $d"
# d = 2335
echo# null变量会如何呢?
e=""
echo "e = $e"
# e =
let "e += 1"
# 算术操作允许一个null变量?
echo "e = $e"
# e = 1
echo
# null变量将被转换成一个整型变量.# 如果没有声明变量会怎样?
echo "f = $f"
# f =
let "f += 1"
# 算术操作能通过么?
echo "f = $f"
# f = 1
echo
# 未声明的变量将转换成一个整型变量.
# 所以说Bash中的变量都是不区分类型的.
exit 0
不区分变量的类型既是幸运的事情也是悲惨的事情. 它允许你在编写脚本的时候更加的灵活(但是也足
够把你搞晕!), 并且可以让你能够更容易的编写代码. 然而, 这也很容易产生错误, 并且让你养成糟糕
的编程习惯.
这样的话, 程序员就承担了区分脚本中变量类型的责任. Bash是不会为你区分变量类型的
bash-shell高级编程-变量的赋值相关推荐
- Bash Shell脚本编程-变量知识
Shell:GUI CLI 提供交互式接口:提高效率 命令行展开:~ ,{} 命令别名:alias 命令历史:history Globbing:*,?,[],[^] 命令补全:$PATH指定的目录下 ...
- shell高级编程笔记(第九章 变量重游)
第三部分 超越基本 第九章 变量重游 如果变量使用恰当,将会增加脚本的能量和灵活性.但前提是这需要仔细学习变量的细节知识. 9.1 内部变量 $BASH 这个变量将指向Bash的二进制执行文件的位置 ...
- linux shell 高级编程,shell高级编程
条件选择if语句 选择执行: 注意:if语句可嵌套 单分支 if 判断条件;then 条件为真的分支代码 fi 双分支 if 判断条件; then 条件为真的分支代码 else条件为假的分支代码 fi ...
- Shell脚本编程----变量的使用
接触Linux Shell脚本编程很久了,但是发现每次学完之后就会忘记,这似乎又印证了那句"好记性不如烂笔头"的言语,事实确实如此,坚持写博客,定期回顾,你会感觉很充实. 这是本系 ...
- bash shell简介及变量
一.简介 Bash(GNU Bourne-Again Shell):是shell的一种: 是一个命令语言解释器(command-language interpreter):可以兼容大多数其他shell ...
- linux脚本怎么获取参数,在Bash shell脚本编程中,如何正确无误获取到“脚本选项参数”和“脚本参数”呢?...
Linnux 中有些命令的功能非常强大,主要是因为它支持的命令选项比较多.如:[ip]命令可以配置IP地址.路由条目的配置管理操作非常完善,该命令就可以完成[ifconfig]和[route]命令实现 ...
- shell高级编程笔记(第十章 循环和分支)
第十章 循环和分支 对代码块进行操作是有组织的结构化的shell脚本的关键.为了达到这个目的,循环和分支提供帮助. 10.1 循环 循环就是重复一些命令的代码块,如果条件不满足就退出循环. for 循 ...
- 第二部分 Linux Shell高级编程技巧——第三章 运行级别脚本介绍
笔记 #运行级别脚本介绍 #准备工作 #进入目录 cd /home/wgb/shell #建立文件夹 mkdir 0421 #进入目录 cd 0421#运行级别 #运行级别目录 #进入etc目录 [r ...
- C语言高级编程:字符串赋值的几种方式
1. 总结 1)下面两种方式的字符串赋值均正确 char str1[] = "hello str1"; char *str2 = "hello str2"; ...
- linux bash sh,linux bash shell.sh编程实例
1.输出 #!/bin/bash echo "Please type your number:" read a for ((i=1;i<=a;i++)) do for ((p ...
最新文章
- python-第二块:time模块和datatime模块
- (十)boost库之多线程
- SpringCloud实现原理图
- 漫画算法:判断2的乘方
- angluar cdk_零分钟即可在容器开发套件(CDK)上实现云运营
- PyTorch 系列 | 数据加载和预处理教程
- ArcSDE10.1配置Oracle 监听器来使用SQL操作ST_Geometry(个人改动版)
- kafka入门综合概要介绍
- 端口镜像 流量过滤_在 AWS 云环境中滥用 VPC 流量镜像抓取网络流量
- HEL上清除Oracle10g clusterware的失败安装
- [2018.07.17 T2] Palindromes
- uniapp将h5链接打包成安卓
- 使用Navicat导入备份的数据库文件操作流程
- grads之平均气温场与距平
- 如何用informatic实现表的增量抽取
- matlab的clear函数,[转载]matlab学习笔记(一)之clear,clc,close劝函数
- Mybatis新增获取Id
- 心情整天都在郁闷浮云往事如云烟,撕心裂肺:伤感心情日志
- asp新闻发布系统 html,构建你的网站新闻自动发布系统之一_asp实例
- android圆角设置