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的极大 ...
随机推荐
- LG3809 【模板】后缀排序
题意 题目背景 这是一道模板题. 题目描述 读入一个长度为 $ n $ 的由大小写英文字母或数字组成的字符串,请把这个字符串的所有非空后缀按字典序从小到大排序,然后按顺序输出后缀的第一个字符在原串中的 ...
- 使用Maven插件启动tomcat服务
新建maven web项目,首先保证maven环境OK,maven项目能正常install1.pom.xml文件配置如下: <build> <pluginManagement> ...
- apache geode 试用
使用docker 运行,文档参考的官方的5 分钟学习文档 拉取镜像 docker pull apachegeode/geode 启动 docker run -it -p 10334:10334 -p ...
- 使用uflare/smtp2http 将smtp 转转化为http 请求
uflare/smtp2http 是一个很不错的工具,我们使用这个工具,可以快速的将smtp 服务转换为http 服务 用途实际上挺多的 devops 系统 需要使用smtp的系统(测试) 基于smt ...
- Unity项目架构设计与开发管理 学习
视频地址:https://v.qq.com/x/page/d016340mkcu.html assetstore save manager
- ThinkPHP3.2 where方法的使用
where方法的用法是ThinkPHP查询语言的精髓,也是ThinkPHP ORM的重要组成部分和亮点所在,可以完成包括普通查询.表达式查询.快捷查询.区间查询.组合查询在内的查询操作.where方法 ...
- Spring5 新特性
Spring Framework 5.0是在Spring Framework 4.0之后将近四年内一次重大的升级. 最大特点之一是响应式编程(Reactive Programming). 响应式编程核 ...
- 记一次挂马清除经历:处理一个利用thinkphp5远程代码执行漏洞挖矿的木马
昨天发现 一台服务器突然慢了 top 显示 几个进程100%以上的cpu使用 执行命令为 : /tmp/php -s /tmp/p2.conf 基本可以确定是被挂马了 下一步确定来源 last 没有 ...
- Eclipse配置问题
1.eclipse中通过search打开第二个文件时第一个文件自动关闭问题: 解决方案: window-preferences-general-search找到第一行的一个选项 reuse edit ...
- Hadoop 完全分布式部署
完全分布式部署Hadoop 分析: 1)准备3台客户机(关闭防火墙.静态ip.主机名称) 2)安装jdk 3)配置环境变量 4)安装hadoop 5)配置环境变量 6)安装ssh 7)集群时间同步 7 ...