shell命令输出
在shell脚本中的打印输出通常会有echo和printf两种,前者会自动换行。
一、echo
Shell 的 echo 指令与 PHP 的 echo 指令类似,都是用于字符串的输出。您可以使用echo实现更复杂的输出格式控制。
1.显示普通字符串:
[root@localhost ~]# echo "It is a test"
It is a test
[root@localhost ~]# echo It is a test
It is a test
2.显示转义字符
[root@localhost ~]# echo "\"It is a test\""
"It is a test"
3.显示变量
[root@localhost ~]# name=”OK”
[root@localhost ~]# echo “$name It is a test”
“”OK” It is a test”
[root@localhost ~]# echo $name It is a test
”OK” It is a test
[root@localhost ~]#
以下的转义字符都可在echo中使用
|
转义字符 |
含义 |
|
\\ |
反斜杠 |
|
\a |
警报,响铃 |
|
\b |
退格(删除键) |
|
\f |
换页(FF),将当前位置移到下页开头 |
|
\n |
换行 |
|
\r |
回车 |
|
\t |
水平制表符(tab键) |
|
\v |
垂直制表符 |
echo
-e开启转义
-E禁止转义,默认也是不转义的
4、read
read 命令从标准输入中读取一行,并把输入行的每个字段的值指定给 shell 变量。
[root@localhost ~]# cat echo_var.sh
#!/bin/sh
read name
echo "$name It is a test"
[root@localhost ~]# chmod echo_var.sh
[root@localhost ~]#
[root@localhost ~]# ./echo_var.sh
var1
var1 It is a test
5、显示结果定向至文件
[root@localhost ~]# echo "It is a test" > myfile
[root@localhost ~]#
[root@localhost ~]# cat myfile
It is a test
6、原样输出字符串,不进行转义或取变量(用单引号)
[root@localhost ~]# echo '$name\"'
$name\"
7、显示命令执行结果
反引号
[root@localhost ~]# echo `date`
Mon Mar :: CST
二、printf
printf 命令用于格式化输出,是echo命令的增强版。
printf 使用引用文本或空格分隔的参数,外面可以在printf中使用格式化字符串,还可以制定字符串的宽度、左右对齐方式等。默认printf不会像 echo 自动添加换行符,我们可以手动添加换行符\n。
[root@localhost ~]# echo "Hello, Shell"
Hello, Shell
[root@localhost ~]# printf "Hello, Shell\n"
Hello, Shell
格式替代符:
%b 相对应的参数被视为含有要被处理的转义序列之字符串。
%c ASCII字符。显示相对应参数的第一个字符
%d, %i 十进制整数
%e, %E, %f 浮点格式
%g %e或%f转换,看哪一个较短,则删除结尾的零
%G %E或%f转换,看哪一个较短,则删除结尾的零
%o 不带正负号的八进制值
%s 字符串
%u 不带正负号的十进制值
%x 不带正负号的十六进制值,使用a至f表示10至15
%X 不带正负号的十六进制值,使用A至F表示10至15
%% 字面意义的%
三、test
test 命令是Shell环境中测试条件表达式的使用工具,用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。
1、数值测试
|
参数 |
说明 |
|
-eq |
等于则为真 |
|
-ne |
不等于则为真 |
|
-gt |
大于则为真 |
|
-ge |
大于等于则为真 |
|
-lt |
小于则为真 |
|
-le |
小于等于则为真 |
实例:
[root@localhost ~]# vi test.sh
#!/bin/bash
num1=
num2=
if test $[num1] -eq $[num2]
then
echo '两个数相等!'
else
echo '两个数不相等!'
fi
[root@localhost ~]# chmod test.sh
[root@localhost ~]#
[root@localhost ~]# ./test.sh
两个数相等!
2、字符串测试
|
参数 |
说明 |
|
= |
等于则为真 |
|
!= |
不相等则为真 |
|
-z 字符串 |
字符串的长度为零则为真 |
|
-n 字符串 |
字符串的长度不为零则为真 |
实例:
[root@localhost ~]# vi test1.sh
#!/bin/bash
num1="ru1noob"
num2="wiki"
if test $num1 = $num2
then
echo '两个字符串相等!'
else
echo '两个字符串不相等!'
fi
[root@localhost ~]# chmod test1.sh
[root@localhost ~]#
[root@localhost ~]# ./test1.sh
两个字符串不相等!
3、文件测试
|
参数 |
说明 |
|
-e 文件名 |
如果文件存在则为真 |
|
-r 文件名 |
如果文件存在且可读则为真 |
|
-w 文件名 |
如果文件存在且可写则为真 |
|
-x 文件名 |
如果文件存在且可执行则为真 |
|
-s 文件名 |
如果文件存在且至少有一个字符则为真 |
|
-d 文件名 |
如果文件存在且为目录则为真 |
|
-f 文件名 |
如果文件存在且为普通文件则为真 |
|
-c 文件名 |
如果文件存在且为字符型特殊文件则为真 |
|
-b 文件名 |
如果文件存在且为块特殊文件则为真 |
[root@localhost ~]# vi test2.sh
#!/bin/bash
cd /bin
if test -e ./bash
then
echo '文件已存在!'
else
echo '文件不存在!'
fi
[root@localhost ~]# chmod test2.sh
[root@localhost ~]#
[root@localhost ~]# ./test2.sh
文件已存在!
4、条件测试
Shell还提供了与( -a )、或( -o )、非( ! )三个逻辑操作符用于将测试条件连接起来,其优先级为::“!”最高,“-a”次之,“-o”最低。
实例
[root@localhost ~]# vi test3.sh
#!/bin/bash
cd /bin
if test -e ./notFile -o -e ./bash
then
echo '有一个文件存在!'
else
echo '两个文件都不存在'
fi
[root@localhost ~]# chmod test3.sh
[root@localhost ~]#
[root@localhost ~]# ./test3.sh
有一个文件存在!
end
shell命令输出的更多相关文章
- python中得到shell命令输出的方法
python中得到shell命令输出的方法: 1. import subprocess output = subprocess.Popen(['ls','-l'],stdout=subprocess ...
- shell 脚本之获取命令输出字符串以及函数参数传递
在ubuntu 14.04之后,所有的U盘挂载也分用户之分,最近很多操作也和U盘有关,所以就研究了一上午shell脚本函数以及字符串操作的方法. 字符串操作: 获取他的命令输出比较简单,打个简单的比方 ...
- 几种在shell命令行中过滤adb logcat输出的方法
我们在Android开发中总能看到程序的log日志内容充满了屏幕,而真正对开发者有意义的信息被淹没在洪流之中,让开发者无所适从,严重影响开发效率.本文就具体介绍几种在shell命令行中过滤adblog ...
- Linux编程 22 shell编程(输出和输入重定向,管道,数学运算命令,退出脚本状态码)
1. 输出重定向 最基本的重定向是将命令的输出发送到一个文件中.在bash shell中用大于号(>) ,格式如下:command > inputfile.例如:将date命令的输出内容, ...
- 【python中调用shell命令使用PIPE】使用PIPE作为stdout出现假卡死的情况——将stdout重定向为输出到临时文件
在Python中,调用:subprocess.Popen(cmd, stdout = PIPE, stderr = PIPE, shell= true)的时候,如果调用的shell命令本身在执行之后会 ...
- linux C程序中获取shell脚本输出(如获取system命令输出)
转载自 http://blog.csdn.net/hjxhjh/article/details/7909518 1. 前言 Unix 界有一句名言:“一行shell脚本胜过万行C程序”,虽然这句话有些 ...
- Shell test 命令,Shell 输入/输出重定向
一.Shell test 命令 Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值.字符和文件三个方面的测试. 数值测试 参数 说明 -eq 等于则为真 -ne 不等于则为真 -g ...
- Shell 命令行 从日志文件中根据将符合内容的日志输出到另一个文件
Shell 命令行 从日志文件中根据将符合内容的日志输出到另一个文件 前面我写了一篇博文Shell 从日志文件中选择时间段内的日志输出到另一个文件,利用循环实现了我想要实现的内容. 但是用这个脚本的同 ...
- Hadoop Shell命令大全
hadoop支持命令行操作HDFS文件系统,并且支持shell-like命令与HDFS文件系统交互,对于大多数程序猿/媛来说,shell-like命令行操作都是比较熟悉的,其实这也是Hadoop的极大 ...
随机推荐
- 《DSP using MATLAB》Problem 6.15
代码: %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ %% Output In ...
- Spring 中的接口知识整理
本想每个小知识一篇随笔,但是那样,看起来有些单薄,所以,就放在一片文章里了.而且,以后还会慢慢在最后不断的追加. 目录: FactoryBean BeanPostProcessor 1.Factory ...
- python与系统做交互常用的模块和使用方法
1.使用os模块与系统做简单命令的交互 >>>import os >>>os.popen('pwd') <open file 'pwd', mode 'r' ...
- Tag文件的创建与应用
Tag文件,几乎和JSP文件一模一样,可以被JSP页面动态加载调用.Tag文件有什么优势呢(既然和JSP几乎一模一样,那就得想想这个必然有不一样的地方,不然要它存在干嘛) 在设计Web应用时,可以通过 ...
- linux运维注意事项
防火墙和selinux一定要注意 服务器或应用出现错误是一定要查看服务器运行状态是否正确,及其相关运行日志 不管什么时候,能不要特殊字符就不要用特殊字符,避免不必要的错误 在看部署文档的时候一定要认真 ...
- day 56 jQuery学习
1.补充:each 描述:一个通用的迭代函数,它可以用来无缝迭代对象和数组.数组和类似数组的对象通过一个长度属性(如一个函数的参数对象)来迭代数字索引,从0到length - 1.其他对象通过其属性名 ...
- Sublime Text怎么快速建立一个html5页面模板
在编辑器中输入一个半角英文的感叹号(!),然后按下TAB键
- Morris
Morris /*Morris遍历树: *一:如果一个结点有左子树会到达此节点两次(第二次到达结点的时候左子树的所有结点都遍历完成),第一次遍历左子树最后 * 节点为nullptr,第二次遍历指向他自 ...
- Redis 可视化界面工具:Fastoredis
下载地址:https://sourceforge.net/projects/fastoredis/
- Elasticsearch 学习资料
Elasticsearch 学习资料 学习资料 网址 官方网站中文版 https://www.elastic.co/cn/ 全文搜索引擎 Elasticsearch 入门教程(阮一峰) http:// ...