shell基础三

如果表达式中包含特殊字符,Shell 将会进行替换。例如,在双引号中使用变量就是一种替换,转义字符也是一种替换。

举个例子:
  1. #!/bin/bash
  2. a=10
  3. echo -e "Value of a is $a \n"
运行结果:
Value of a is 10
这里 -e 表示对转义字符进行替换。如果不使用 -e 选项,将会原样输出:
Value of a is 10\n

下面的转义字符都可以用在 echo 中:
转义字符 含义
\\反斜杠
\a警报,响铃
\b退格(删除键)
\f换页(FF),将当前位置移到下页开头
\n换行
\r回车
\t水平制表符(tab键) 
\v垂直制表符
可以使用 echo 命令的 -E 选项禁止转义,默认也是不转义的;使用 -n 选项可以禁止插入换行符。

命令替换

命令替换是指Shell可以先执行命令,将输出结果暂时保存,在适当的地方输出。

命令替换的语法:
  1. `command`
注意是反引号,不是单引号,这个键位于 Esc 键下方。

下面的例子中,将命令执行结果保存在变量中:
  1. #!/bin/bash
  2. DATE=`date`
  3. echo "Date is $DATE"
  4. USERS=`who | wc -l`
  5. echo "Logged in user are $USERS"
  6. UP=`date ; uptime`
  7. echo "Uptime is $UP"
运行结果:
Date is Thu Jul  2 03:59:57 MST 2009
Logged in user are 1
Uptime is Thu Jul  2 03:59:57 MST 2009
03:59:57 up 20 days, 14:03,  1 user,  load avg: 0.13, 0.07, 0.15

变量替换

变量替换可以根据变量的状态(是否为空、是否定义等)来改变它的值

可以使用的变量替换形式:
形式 说明
${var}变量本来的值
${var:-word}如果变量 var 为空或已被删除(unset),那么返回 word,但不改变 var 的值。
${var:=word}如果变量 var 为空或已被删除(unset),那么返回 word,并将 var 的值设置为 word。
${var:?message}如果变量 var 为空或已被删除(unset),那么将消息 message 送到标准错误输出,可以用来检测变量 var 是否可以被正常赋值。
若此替换出现在Shell脚本中,那么脚本将停止运行。
${var:+word}如果变量 var 被定义,那么返回 word,但不改变 var 的值。

请看下面的例子:
#!/bin/bashecho ${var:-"Variable is not set"}
echo "1 - Value of var is ${var}"echo ${var:="Variable is not set"}
echo "2 - Value of var is ${var}"unset var
echo ${var:+"This is default value"}
echo "3 - Value of var is $var"var="Prefix"
echo ${var:+"This is default value"}
echo "4 - Value of var is $var"echo ${var:?"Print this message"}
echo "5 - Value of var is ${var}"
运行结果:
纯文本复制
  1. Variable is not set
  2. 1 - Value of var is
  3. Variable is not set
  4. 2 - Value of var is Variable is not set
  5. 3 - Value of var is
  6. This is default value
  7. 4 - Value of var is Prefix
  8. Prefix
  9. 5 - Value of var is Prefix

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/292888.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

将一个压缩文件分成多个压缩文件;RAR文件分卷

有时候需要上传压缩文件,但是限制了单个文件的大小,那我们怎么才能将一个比较大的压缩文件分割成多个压缩文件,从而符合要求的进行文件的上传呢?这里小编告诉你一个技巧。 工具/原料 电脑 winrar(一般电脑都自带了&…

定义命令别名(alias)

Linux之alias:1.查看当前别名:alias# alias alias cpcp -i alias l.ls -d .* --colortty alias llls -l --colortty alias lsls --colortty alias mvmv -i alias rmrm -i alias whichalias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde 2.设…

python画相关性可视化图_Python可视化很简单,一文教你绘制饼图、极线图和气泡图...

matplotlib库作为Python数据化可视化的最经典和最常用库,掌握了它就相当于学会了Python的数据化可视化,上次呢,已经和大家聊了关于柱状图、条形图和直方图相关的东东,相信大家已经掌握了哈,那今天呢,咱们再…

图像处理技术(二)滤波去噪

在图像处理领域中,在真正的应用过程前,通常需要对图像进行预先处理,达到去除干扰项的目的。滤波去噪就是其中的一项图像预处理工作。在.NET下常用OpenCV进行图像处理工作,常用的.NET下的OpenCV库有Emgu CV和OpenCVSharp。EmguCV是.NET平台下对…

iOS开发之Runtime关联属性

2019独角兽企业重金招聘Python工程师标准>>> 首先,推荐给大家一个非常好用的一个网站: 非盈利无广告开发者专用网址导航:http://www.dev666.com/ API介绍 我们先看看Runtime提供的关联API,只有这三个API,使…

shell基础四

Bash 支持很多运算符,包括算数运算符、关系运算符、布尔运算符、字符串运算符和文件测试运算符。原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。expr 是一款表达式计算工具&#xff0c…

DecisionTree决策树算法及参数详解+实例+graphviz生成决策树

DecisionTree决策树大全 原文:http://ihoge.cn/2018/DecisionTree.html 利用信息墒判定先对那个特征进行分裂 信息墒是衡量信息不确定性的指标,信息墒公式: H(X)−∑x∈XP(x)log2P(x)其中P(x)表示事件x出现的概率。回到决策树的构建问题上…

穿皮裤放屁,裤子会鼓吗?真相看这里!

1 拉莫斯:没事儿,打今儿起我管你叫哥,你管我叫爸,咱俩各论各的。▼2 妈妈都是为了你好▼3 秃头女孩最后的倔强▼4 新浪OS:呼~太紧张了,放松下▼5 这什么鬼玩意儿?▼6 这到底是爱老婆&…

公布一个软件,轻新视频录播程序,H264/AAC录制视音频,保存FLV,支持RTMP直播...

已经上传到CSDN,下载地址:http://download.csdn.net/detail/avsuper/7421647,不要钱滴,嘿嘿。。。 本程序能够把摄像头视频和麦克风音频,录制为FLV文件。 视频压缩採用H.264编码,音频压缩採用AAC编码&#…

linux共享库及/etc/ld.so.conf文件的应用

Linux 共享库 Linux 系统上有两类根本不同的 Linux 可执行程序。第一类是静态链接的可执行程序。静态可执行程序包含执行所需的所有函数 —换句话说,它们是“完整的”。因为这一原因,静态可执行程序不依赖任何外部库就可以运行。  第二类是动态链接的…

shell之a+b求和l脚本的三种写法

第一种 #!/bin/bash a5 b10 c$[ $a$b ] echo ${c}第二种 #!/bin/bash a5 b10 let "cab" echo ${c} 第三种 #!/bin/bash a5 b10 ((cab)) echo ${c}

如何判断一个程序是 32bit 还是 64bit ?

咨询区 Jonathan Allen我有一个 .NET 应用程序,我觉得它现在是 32bit,但又不确定构建服务器是否真的帮我编译成了 32bit,请问我有什么办法可以检测当前的程序是否是真的 32bit ?回答区 Jaco Pretorius你想判断运行的应用程序是 32…

c语言知识点(1)

1、函数strlen()和关键字sizeof()sizeof()是运算符,返回值为unsign_int,参数可以是数组、指针、类型、对象、函数等。strlen()是函数,参数必须是字符型指针(char*),2、strlen()/strcat()/strcmp()/strcpy 编写3、memset()/memcmp(…

史上最强物理科普

全世界只有3.14 % 的人关注了爆炸吧知识一沙见世界 一花窥天堂手心握无限 须臾纳永恒杨振宁曾说读上面的四句诗可以感受到物理的美但物理的美不止于此物理还有一种庄严美一种神秘美一种初窥宇宙奥秘的畏惧美物理就是如此的迷人任何语言在它的面前都很贫瘠数学让人摆脱了愚昧而…

Oracle常用函数汇总

在Oracle OCP考试中,相当一部分知识点涉及到对于Oracle常见函数的考查。尽管Oracle官方文档SQL Language Reference中Functions一章内列举了所有Oracle自带函数,但如果要系统的看一遍,还是要花费相当的精力,更何况还是英文呢。如果…

直方图python高度_python – 子图中直方图的动画

normed 直方图的True参数使直方图绘制分布的密度.从the documentation开始: normed : boolean, optional If True, the first element of the return tuple will be the counts normalized to form a probability density, i.e., n/(len(x)dbin), i.e., the integra…

【java设计模式之Command(菜单命令) 】

Command模式是最让我疑惑的一个模式,我在阅读了很多代码后,才感觉隐约掌握其大概原理,我认为理解设计模式最主要是掌握起原理构造,这样才对自己实际编程有指导作用.Command模式实际上不是个很具体,规定很多的模式,正是这个灵活性,让人有些confuse.    Command定义  不少C…

经典的01背包问题

01背包问题具体例子: 假设现有容量10kg的背包,另外有3个物品,分别为a1,a2,a3。物品a1重量为3kg,价值为4;物品a2重量为4kg,价值为5;物品a3重量为5kg,价值为6。将哪些物品放入背包可使得背包中的总价值最大? 这个问题有两种解法,动态规划和贪婪算法。本文仅涉及动态…

代码设置Shape和Selector

开发中经常需要使用Shape和Selector,如果每个都用xml设置的话,会占用apk大小,同时命名多了也会混乱,使用代码来设置会方便很多。 需要用到2个类:GradientDrawable和StateListDrawable 相关API: setColor(rg…