Linux SHELL-常用命令,你能想到的都在这(二)

恒生GTN 2017-03-15 03:29:24
这里对Linux Shell中的一些常用命令进行介绍,注意不是linux 命令哦!废话不多说,接着看您就明白了,Come On。

break命令
break的意思就是跳出while或者for等循环,例如以下代码:

在case语句中,执行完每个分支以后,就会结束命令

命令
还记得前面介绍的“[”吗,这里又来一个“:” 没错Shell命令总是有一些奇怪的命令符,它们都有特殊含义 “:”="true"
请看下面这段代码:

执行结果:

由于“:”是内置命令,所以运行速度比true稍微快那么一丢丢,好吧,我承认这不是一个很好的例子。

continue命令
break和continue命令。break好比阳刚男孩干净利落,结束整个循环动作,而continue犹如柔美少女犹抱琵琶,结束这一个单次循环,而整个循环动作不会终止。

eval命令
eval命令允许对参数进行求值,它的格式如下:

把参数当做一个Shell命令来执行。eval命令会将参数连接为一个整的字符串,然后将这个字符串作为一个新的Shell输入进行执行。
当我们将一些字符串作为eval的参数时,Shell在执行整个eval命令时,它会对eval命令的参数进行两次扫描。例如以下示例代码:

在eval执行的过程中,先对y='$'$x进行第一次扫描,得到y=$Num;然后再进行第二次扫描,也就是执行y=$Num,得到了y=10;当执行echo $y的时候,就输出结果10。

exit n命令
exit命令使脚本以退出码n结束运行。如果允许自己的脚本程序在退出时不指定一个退出状态,那么该脚本中最后一条被执行命令的状态将被用作为返回值。
在脚本程序中提供一个退出码总是一个良好的习惯。
在Shell脚本编程中,退出码0表示成功,退出码1~125是脚本程序可以使用的错误代码。


expr命令
expr命令是一个手工命令行计数器,用于在UNIX/LINUX下求表达式变量的值,一般用于整数值,也可用于字符串。以下通过简单实例来看看expr的使用。

在上面的脚本中,使用了反引号(`),使用了该引号,就可以使expr的执行结果赋值给count变量.
expr命令的功能比较简单、单一,但是很强大。但是需要注意的是,在进行乘法运算时,如果写成:

这样就会报错,这是由于*号在Shell有特殊意义,我们需要加上转义字符\。

printf命令
printf命令就是带有format功能的echo。它可以对输出的内容进行格式化,比如以下示例代码:

执行结果



执行结果

%s %c %d %f都是格式替代符
%-10s 指一个宽度为10个字符(-表示左对齐,没有则表示右对齐),任何字符都会被显示在10个字符宽的字符内,如果不足则自动以空格填充,超过也会将内容全部显示出来。
%-4.2f 指格式化为小数,其中.2指保留2位小数。


return命令
return命令的作用是使函数返回。return命令有一个数值参数,这个参数在调用该函数的脚本程序中被看做是该函数的返回值;如果没有指定参数,return命令默认返回最后一条命令的退出码。

set命令
set 命令作用主要是显示系统中已经存在的shell变量,以及为已经存在的shell变量设定新的值。使用set更改shell特性时,符号”+”和”-“的 作用分别是打开和关闭指定的模式。set命令不能够定义新的shell变量。如果要定义新的变量,可以使用declare命令以变量名=值的格式进行定义 即可。
当使用set命令不带任何参数时,它会输出系统中已经存在的所有Shell变量;我们可以使用set设置我们本地的Shell变量,当退出Shell时,这些本地的Shell变量就会失效,如果需要永久的保存这些Shell变量,则需要写入配置文件中。

选项
-a:标示已修改的变量,以供输出至环境变量。
-b:使被中止的后台程序立刻回报执行状态。
-C:转向所产生的文件无法覆盖已存在的文件。
-d:Shell预设会用杂凑表记忆使用过的指令,以加速指令的执行。使用-d参数可取消。
-e:若指令传回值不等于0,则立即退出shell。
-f:取消使用通配符。
-h:自动记录函数的所在位置。
-H Shell:可利用"!"加<指令编号>的方式来执行history中记录的指令。
-k:指令所给的参数都会被视为此指令的环境变量。
-l:记录for循环的变量名称。
-m:使用监视模式。
-n:只读取指令,而不实际执行。
-p:启动优先顺序模式。
-P:启动-P参数后,执行指令时,会以实际的文件或目录来取代符号连接。
-t:执行完随后的指令,即退出shell。
-u:当执行时使用到未定义过的变量,则显示错误信息。
-v:显示shell所读取的输入值。
-x:执行指令后,会先显示该指令及所下的参数。


unset命令
unset命令的作用是从环境中删除变量或函数,这个命令不能删除shell本身定义的只读变量。

shift命令
shift 命令用于对参数的移动(左移),通常用于在不知道传入参数个数的情况下依次遍历每个参数然后进行相应处理(常见于Linux中各种程序的启动脚本)还有另 外一个重要用途, Bsh 定义了9个位置变量,从 $1 到 $9,这并不意味着用户在命令行只能使用9个参数,借助 shift 命令可以访问多于9个的参数
示例代码:

执行结果:


算术扩展
在上面总结了expr命令可以完成简单的算术运算。但是这个命令执行起来是非常的慢得,因为它需要调用一个新的shell来处理expr命令。
一种更好的方式是使用$((...))扩展,把我们准备求值的表达式放在$((...))中就能够更有效地完成简单的算术运算。例如以下代码:


参数扩展
首先看一段简单的代码:

我们期望得到的是0_Hundsun、1_Hundsun…等值,但是实际上是什么也不会得到。这是为什么呢?
问题出在于Shell试图替换变量$i_Hundsun中$i的值的时候,理解为替换$i_Hundsun的值,而实际上不存在$i_Hundsun这个 变量,所以就被替换成空值了。在实际写代码时,为了保护变量名中类似于$i部分的扩展,我们需要把i放在花括号中,如下:

这样就不会出现问题了,对于参数扩展,还有很多内容,这里是总结不全面的,如果需要,请各位自行Google吧。

结语
关于Linux Shell的一些常用命令就聊到这里,下一篇开始将通过一些实际的例子来讲解SHELL在实际工作中的作用,敬请期待!
...全文
1092 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

3,286

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 实用资料发布区
社区管理员
  • 实用资料发布区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧