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的极大 ...
随机推荐
- Python基础线程和协程
线程: 优点:共享内存,IO操作时,创造并发操作 缺点:枪战资源 线程不是越多越好,具体案例具体分析,请求上下文切换耗时 IO密集型适用于线程,IO操作打开文件网络通讯类,不需要占用CPU,只是由CP ...
- Spring 注解bean默认名称规则
在使用@Component.@Repository.@Service.@Controller等注解创建bean时,如果不指定bean名称,bean名称的默认规则是类名的首字母小写,如SysConfig ...
- mod libs 课堂
name1= input("请输入一个名字:") name2 = input("再输入一个名字:") print("{}刚化妆完\n就被路过的{}拍照 ...
- 依赖注入的方式测试ArrayList和LinkedList的效率(对依赖注入的再次理解)
9/20 号再进行学习 在C++中,main函数尽可能的简单,只要调用子函数的一句话就实现了功能. java开发中,controller就相同于是main函数,其他类的方法不在本类中时候, 1.可以用 ...
- python——psutil的使用(获取进程信息)
import psutil psutil.pids() [1, 2, 3, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 26, 27, 28, 2 ...
- haproxy httpcheck with basic auth
一个简单的需求,就是需要在 haproxy 的 httpcheck 使用 basic 认证,解决方法 base64 编码username 以及密码 echo -n "my_username: ...
- 01python简介
目录 1. Python起源 2. 解释器 3. Python 的设计目标 4. Python 的设计哲学 5. 为什么选择 Python ? 6. Python 特点 7. Pyth ...
- java文件夹相关操作 演示样例代码
java文件夹相关操作 演示样例代码 package org.rui.io; import java.io.File; import java.io.FilenameFilter; import ja ...
- Lambda 表达式 是 个 好东东
Lambda 表达式 是 个 好东东 首先,通过 Lambda 表达式 + 动态语言特性 dynamic , C# 已经 可以 实现 函数式 编程 了 其次, 利用 Lambda, 可以 实现 AOP ...
- javascript UI lib
react 现在已经有JS,android,IOS版本的了 react作为View层的库,结合Flux react native Angular 是 MVVM, React 是 Flux(或者 MVC ...