在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命令输出的更多相关文章

  1. python中得到shell命令输出的方法

    python中得到shell命令输出的方法: 1.  import subprocess output = subprocess.Popen(['ls','-l'],stdout=subprocess ...

  2. shell 脚本之获取命令输出字符串以及函数参数传递

    在ubuntu 14.04之后,所有的U盘挂载也分用户之分,最近很多操作也和U盘有关,所以就研究了一上午shell脚本函数以及字符串操作的方法. 字符串操作: 获取他的命令输出比较简单,打个简单的比方 ...

  3. 几种在shell命令行中过滤adb logcat输出的方法

    我们在Android开发中总能看到程序的log日志内容充满了屏幕,而真正对开发者有意义的信息被淹没在洪流之中,让开发者无所适从,严重影响开发效率.本文就具体介绍几种在shell命令行中过滤adblog ...

  4. Linux编程 22 shell编程(输出和输入重定向,管道,数学运算命令,退出脚本状态码)

    1. 输出重定向 最基本的重定向是将命令的输出发送到一个文件中.在bash shell中用大于号(>) ,格式如下:command > inputfile.例如:将date命令的输出内容, ...

  5. 【python中调用shell命令使用PIPE】使用PIPE作为stdout出现假卡死的情况——将stdout重定向为输出到临时文件

    在Python中,调用:subprocess.Popen(cmd, stdout = PIPE, stderr = PIPE, shell= true)的时候,如果调用的shell命令本身在执行之后会 ...

  6. linux C程序中获取shell脚本输出(如获取system命令输出)

    转载自 http://blog.csdn.net/hjxhjh/article/details/7909518 1. 前言 Unix 界有一句名言:“一行shell脚本胜过万行C程序”,虽然这句话有些 ...

  7. Shell test 命令,Shell 输入/输出重定向

    一.Shell test 命令 Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值.字符和文件三个方面的测试. 数值测试 参数 说明 -eq 等于则为真 -ne 不等于则为真 -g ...

  8. Shell 命令行 从日志文件中根据将符合内容的日志输出到另一个文件

    Shell 命令行 从日志文件中根据将符合内容的日志输出到另一个文件 前面我写了一篇博文Shell 从日志文件中选择时间段内的日志输出到另一个文件,利用循环实现了我想要实现的内容. 但是用这个脚本的同 ...

  9. Hadoop Shell命令大全

    hadoop支持命令行操作HDFS文件系统,并且支持shell-like命令与HDFS文件系统交互,对于大多数程序猿/媛来说,shell-like命令行操作都是比较熟悉的,其实这也是Hadoop的极大 ...

随机推荐

  1. 《DSP using MATLAB》Problem 6.20

    先放子函数: function [C, B, A, rM] = dir2fs_r(h, r); % DIRECT-form to Frequency Sampling form conversion ...

  2. hdu2461 Rectangles 线段树--扫描线

    You are developing a software for painting rectangles on the screen. The software supports drawing s ...

  3. windows查询占用端口

    https://jingyan.baidu.com/article/3c48dd34491d47e10be358b8.html 1)端口号 - 查进程 netstat -aon|findstr &qu ...

  4. 通信协议演进与JCE协议详解

    一.通信协议概述通信协议是两个节点之间为了协同工作.实现信息交换,而协商的规则和约定,例如规定字节序,各个字段类型,使用什么压缩算法或加密算法等. 1.原始数据假设A和B通信,获取或设置用户基本资料, ...

  5. day 60 Bootstrip学习

    图标地址 http://fontawesome.io/icons/ 图标用法地址 http://fontawesome.io/examples/ 实现代码 <!DOCTYPE html> ...

  6. CONTINUOUS MIGRATION

    转自:https://pgloader.io/blog/continuous-migration/ After having been involved in many migration proje ...

  7. 100 webhook implementations

    转自: https://streamdata.io/blog/100-webhook-implementations/  很不错的整理 What is the scope of the event-d ...

  8. GlusterFS学习

    环境准备 3台机器,每个机器双网卡,每个机器还需要额外添加1个10GB的磁盘用于测试 机器系统版本是centos6.6 [root@gluster-1-1 ~]# uname -rm 2.6.32-5 ...

  9. 轻量级web框架cicada----(转)

    源码地址: https://github.com/TogetherOS/cicada 快速启动 下面来看看如何快速启动一个 HTTP 服务. 只需要创建一个 Maven 项目,并引入核心包. < ...

  10. webpack 4 学习资料

    webpack 4 学习资料 资料 网址 webpack 中文版 https://webpack.docschina.org/configuration/ webpack 4 教程 https://s ...