linux 下shell程序(二)
输入和输出
输入指的是Shell程序读入数据。有从文件读取、从用户输入读取等方式读入数据。输出指的是Shell程序的运行
结果的处理,可以显示到屏幕或保存到文件。
用ceho命令输出结果
echo $str #将结果输出到终端。
echo $str >file #将结果保存到文件file中,如果没有文件会新建一个文件。如果已经有文件则会覆盖以前的文件
echo $str >>file #将结果追加到文件file中。
echo输出的内容可以有下面的格式控制字符。
\c:末尾加上\c表示这一行输出完毕以后不换行。
\t:输出一个跳格,相当于按下Tab键
\n:输出一个换行。
需要注意的是,如果要输出特殊字符,必须加-e选项,否则会直接输出字节。加-n选项可以禁止echo输出后的换
行。
用read命令读取信息
read命令可以从键盘或文件中读入信息,并赋给一个变量。read命令读取信息的各种方法如下所示:
1.如果只读入一个变量,会把键盘上输入的所有信息赋值给这个变量。按Enter键结束输入。
2.如果输入多个变量,则用空格键将输入的变量隔开。如果输入变量的个数多于需要读取变量的
个数,将会把剩余的变量赋值给最后一个变量。
3.在读取语句后面添加<filename(文件名),表示从文件中读取数据,并且赋值给变量。
测试语句
这里所说的测试是对变量的大小、字符串、文件属性等内容进行判断。test命令可以用于字符串、数
字、文件状态等内容的测试。
文件状态测试
文件状态测试指的是对文件的权限、有无、属性、类型等内容进行判断。与其他语言不同的是,test命令的
测试结果,返回0时表示测试成功。返回1时表示测试失败。
-d 测试文件是否是目录文件 -s 测试文件是否非空
-f 测试文件是否是正规文件 -w 测试是否可写
-L 测试文件是否是符号连接 -u 测试文件是否是suid位设置
-x 测试文件是否可执行 -r 测试文件是否可读
数值测试
数值测试指的是比较两个数值的大小或相等关系,相当于c语言中的比较运算符。Shell程序中的数值测试有
下面两种形式。
1.用test命令。用test命令和相应的参数可以对两个数值得关系进行测试,使用方法如下所示:
test 第一个操作数 数值比较符 第二个操作数
2.用中括号代替test命令。这种方法和test命令的原理相同,使用方法如下所示。需要注意的
是【后面一定要有一个空格】:
第一个操作数 数值比较符 第二个操作数
-eq: 两个数是否相等 -ne: 两个是否不相等
-le: 第一个数是否不大于第二个数 -ge: 第一个数是否不小于第二数
-gt: 第一个数是否大于第二个数 -lt: 第一个数是否小于第二个数
上图所示,终端中显示的结果为1,表示测试结果是3和5不相等。
终端中显示的结果为0,表示10小于12为真。
字符串测试
字符串测试,指的是比较来那个字符串是否相等,或者判断一个字符是否为空。这种判断常用来测试用户
输入是否符合程序的要求。
test 字符串比较符 字符串
test 字符串 1 字符串比较符 字符串 2
[ 字符串比较符 字符串 ]
[ 字符串1 字符串比较符 字符串 2 ]
=:测试两个字符串是否相等。
!=:测试两个字符串是否不相等
-Z:测试字符串是否是空字符串
-n:测试字符串是否是非空字符串
逻辑测试
逻辑测试指的是将多个条件进行逻辑运算,它们常用作循环语句或判断语句的条件。Shell程
序下有下面三种逻辑测试。
-a:逻辑与,操作符两边均为真时结果为真,否则结果为假。
-o:逻辑或,操作符两边至少一个为真时,结果为真,否则为假。
-!:逻辑否,只有条件为假时,返回结果为真。
终端中显示为0 表明了测试结果为真,因为文件a.txt是可写的。
流程控制结构
流程控制结构指的是使用逻辑判断,针对判断的结果执行不同语句或不同的程序部分。这种结构
是所有编程语言的重要组成部分
if语句
if语句是最常用的条件判断语句,它通过一个条件的真假来决定后面的语句是不是执行。最简单的if条件语句如下所示:
if 条件
then 命令1
fi
在这种结构中,先执行条件判断,如果条件结果为真,则执行then后面的语句,一直到fi。如果条件为假,则跳过
后面的语句,执行fi后面的语句。
如果条件判断的结果,只可能是真或假两种值,则可以使用下面的结构。
if 条件
then 命令1
else 命令2
f I
在这种结构中,先对条件进行判断,如果判断结果为真,则执行then后面的语句。如果判断结果为假,则执行
else后面的语句
如果判断的结果有多种可能,则使用下面的if语句嵌套结构。需要注意的是,if结构必须要有fi进行结束。
if 条件 1
then 命令1
elif 条件 2
then 命令2
else 命令3
f I
if语句也可以将then写在if条件之后,中间用分号隔开。 这种语句如下所示:
if 条件 1:;then 命令1
elif 条件 2;then 命令2
else 命令3
fi
linux 下shell程序(二)的更多相关文章
- linux下shell程序(一)
shell结构 1.#!指定执行脚本的shell 2.#注释行 3.命令和控制结构 创建shell程序的步骤 第一步:创建一个包含命令和控制结构的文件. 第二步:修改这个文件的权限使它可以执行.使用c ...
- 06 Linux下Shell介绍
一.概述 每个人在成功登陆Linux后,系统会出现不同的提示符号,例如$,~,#等,然后你就可以开始输入需要的命令.若命令正确,系统就会依据命令的要求来执行,直到注销系统为止,在登陆到注销期间,输入的 ...
- .Neter玩转Linux系列之四:Linux下shell介绍以及TCP、IP基础
基础篇 .Neter玩转Linux系列之一:初识Linux .Neter玩转Linux系列之二:Linux下的文件目录及文件目录的权限 .Neter玩转Linux系列之三:Linux下的分区讲解 .N ...
- Linux 反弹shell(二)反弹shell的本质
Linux 反弹shell(二)反弹shell的本质 from:https://xz.aliyun.com/t/2549 0X00 前言 在上一篇文章 Linux反弹shell(一)文件描述符与重定向 ...
- Linux下C程序的编辑,编译和运行以及调试
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html 内部邀请码:C8E245J (不写邀请码,没有现金送) 国 ...
- 位图文件(BMP)格式以及Linux下C程序实现(转)
源:位图文件(BMP)格式以及Linux下C程序实现 说到图片,位图(Bitmap)当然是最简单的,它是Windows显示图片的基本格式,其文件扩展名为*.BMP.由于没有经过任何的压缩,故BMP图 ...
- Linux 下Shell变量,环境变量的联系与区别
Linux下Shell变量,环境变量的联系与区别 by:授客 QQ:1033553122 1. 简介 linux下的变量可分成两种:Shell变量和环境变量. Shell变量,又称本地变量,包括私有 ...
- Linux 下shell 编程学习脚手架
linux body { font-family: Helvetica, arial, sans-serif; font-size: 14px; line-height: 1.6; padding-t ...
- Linux 下Shell的学习
1.Shell学习 1.什么是Shell shell是一个命令解析器,在操作系统的最外层,负责和用户对话,将用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果.2.什么是shell脚本 ...
随机推荐
- storm安装配置
1.修改主机名: vim /etc/sysconfig/network NETWORKING=yes HOSTNAME=MASTER 2.修改IP: 先用ifconfig得到ip信息,将其复制 设置i ...
- Idea 代码编辑错误不飘红提示
Power Save Mode 勾选去掉即可
- 倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-如何查询某个变量的ADS地址
鼠标放到任意一个参数上停留一段时间,会自动弹出关于该条参数的ADS信息 TC3也是一样(如果不是轴的某个参数而是PLC程序绑定的某个变量也是一样,定位到这个变量既可以看到ADS信息) ...
- Java类集-set
Set接口是Collection接口的子接口,Set接口中不能插入反复元素 Set接口的经常使用子类: HashSet是set接口的一个子类.特点:里面不能存放反复元素,并且採用散列的存储方式.所以没 ...
- 区分Activity的四种加载模式
在多Activity开发中,有可能是自己应用之间的Activity跳转,或者夹带其他应用的可复用Activity.可能会希望跳转到原来某个Activity实例,而不是产生大量重复的Activity. ...
- grep和map计算两个集合交集、并集、补集
#!/usr/bin/perl use strict; ######################################## 用grep 和map 获取两个列表的交集并集.补集###### ...
- YII用户注冊表单的实现熟悉前台各个表单元素操作方式
模还是必须定义两个基本方法.还有部分label标签映射为汉字,假设进行表单验证,还要定义一些验证规则: <? php /* * 用户模型 * */ class user extends CAct ...
- caffe 中如何打乱训练数据
第一: 可以选择在将数据转换成lmdb格式时进行打乱: 设置参数--shuffle=1:(表示打乱训练数据) 默认为0,表示忽略,不打乱. 打乱的目的有两个:防止出现过分有规律的数据,导致过拟合或者不 ...
- 在Telerik for silverlight控件radtreeview中如何通过路径得到节点(转载)
页面<telerik:RadTreeView Margin="8" x:Name="radTreeView" SelectionChanged=" ...
- 迁移TFS 2012服务至新的电脑硬件
迁移TFS 2012的时候碰到一些问题, 中文记录很少, 英文的记录也比较零散. 这里记录最直接和简单的方法. 环境: 1. 公司域环境, 所有TFS用户都是公司域帐户. 2. TFS从一台服务器转移 ...