目录

echo printf

test


echo printf

printf命令模仿C程序库(library)里的printf()库程序(library routine)。它几乎复制了
该函数的所有功能。不过在Shell层级的版本上,会有些差异。由于printf的行为是由POSIX
标准所定义,因此使用printf的脚本比使用echo移植性好。
如同echo命令,printf命令可以输出简单的字符串:
[root@master ~]#printf "Hello, Shell\n"
Hello, Shell
[root@master ~]#
你应该可以马上发现,最大的不同在于:printf不像echo那样会自动提供一个换行符号。你必须显式
地将换行符号指定成\n。

echo -n "Enter your name:"  //参数-n的作用是不换行,echo默认是换行

要使转义符生效,需加参数-e

在echo命令输出之后附加换行,可以使用\n选项:
$ cat >echo
#!/bin/bash
echo -e "this echo's 3 new lines\n\n\n"
echo "OK"

$ echo "The log files have all been done" >myfile

$ echo "$LOGNAME carried them out at `date`" >>myfile

$ echo "\"/dev/rmt0"\"
"/dev/rmt0"

事实上,echo 除了 -n options 之外,常用选项还有:
-e :启用反斜线控制字符的转换(参考下表)
-E:关闭反斜线控制字符的转换(预设如此)
-n :取消行末之换行符号(与 -e 选项下的 c 字符同意)

关于 echo 命令所支持的反斜线控制字符如下表:
\a:ALERT / BELL (从系统喇叭送出铃声)
\b:BACKSPACE ,也就是向左删除键
\c:取消行末之换行符号
\E:ESCAPE,跳脱键
\f:FORMFEED,换页字符
\n:NEWLINE,换行字符
\r:RETURN,回车键
\t:TAB,表格跳位键
\v:VERTICAL TAB,垂直表格跳位键
:ASCII 八进位编码(以 x 开首为十六进制) :反斜线本身

$ echo -e "a\tb\tc\nd\te\tf"
a       b       c
d       e       f

上例运用 \t 来区隔 abc 还有 def ,及用\n 将 def 换至下一行。

例二:

$ echo -e "\141\011\142\011\143\012\144\011\145\011\146"
a       b       c
d       e       f

与例一的结果一样,只是使用 ASCII 八进位编码。

例三:

$ echo -e "\x61\x09\x62\x09\x63\x0a\x64\x09\x65\x09\x66"
a       b       c
d       e       f

与例二差不多,只是这次换用 ASCII 十六进制编码。

测试变量是否已经设置
有时要测试是否已设置或初始化变量。如果未设置或初始化,就可以使用另一值。此命令格式为:
$ { v a r i a b l e : - v a l u e }
意即如果设置了变量值,则使用它,如果未设置,则取新值。例如:
$ COLOUR=blue
$ echo "The sky is ${COLOR:-grey} today"
The sky is grey today
变量c o l o u r取值b l u e,e c h o打印变量c o l o u r时,首先查看其是否已赋值,如果查到,则使
用该值。变量$COLOR没有设置,所以会打印后面的grey

上面的例子并没有将实际值传给变量,需使用下述命令完成此功能:
$ { v a r i a b l e : = v a l u e }
下面是一个更实用的例子。查询工资清单应用的运行时间及清单类型。在运行时间及类
型输入时,敲回车键表明用户并没有设置两个变量值,将使用缺省值( 0 3 : 0 0和We e k l y),并
传入a t命令中以按时启动作业。
#!/bin/bash
# vartest
echo "what time do you wish start the payroll [03:00]:"
read TIME
echo " process to start at ${TIME:=03:00} OK"
echo "Is it a monthly or weekly run [Weekly]:"
read RUN_TYPE
echo "Run type is ${RUN_TYPE:=Weekly}'
at -f $RUN_TYPE $TIME
在输入域敲回车键,输出结果如下:
what time do you wish start the payroll [03:00]:

process to start at 03:00 OK
Is it a monthly or weekly run [Weekly]:

Run type is Weekly

test

test是Shell中提供的内置命令,主要用于状态的检验,如果结果为0,表示成功,否则表示失败。

需要注意的是test命令不支持Shell中提供的各种通配符,如:

/> name=stephen

/> test $name = [Ss]tephen
 /> echo $?
 1

在Shell中还提供了另外一种用于状态判断的方式:` expr `,和test不同的是,该方式中的表达式支持通配符,如:
   /> name=stephen
   /> [[ $name == [Ss]tephen ]]
   /> echo $?

0
   #在` expression `中,expression可以包含&&(逻辑与)和||(逻辑或)。
   /> [[ $name == [Ss]tephen && $friend == "Jose" ]]
   /> echo $?
   1
   /> shopt -s extglob   #打开Shell的扩展匹配模式。
   /> name=Tommy
   # "[Tt]o+(m)y"的含义为,以T或t开头,后面跟着一个o,再跟着一个或者多个m,最后以一个y结尾。
   /> [[ $name == [Tt]o+(m)y ]]
   /> echo $?
   0

/> help [[ 出现帮助信息,但下面的help ((,却提示错误,后来发现是这样的,help \(\(
   在Shell中还提供了let命令的判断方式: (( expr )),该方式的expr部分,和C语言提供的表达式规则一致,如:
   /> x=2
   /> y=3
   /> (( x > 2 ))
   /> echo $?
   1
   /> (( x < 2 ))
   /> echo $?
   0  
   /> (( x == 2 && y == 3 ))
   /> echo $?
   0
   /> (( x > 2 || y < 3 ))
   /> echo $?
   1

-d 目录  -r 读  -w 写  -x 执行  -f 常规文件  -L 符号链接

1)判断表达式
if test  (表达式为真)
if test !表达式为假
test 表达式1 –a 表达式2                  两个表达式都为真
test 表达式1 –o 表达式2                 两个表达式有一个为真
2)判断字符串
test –n 字符串                                   字符串的长度非零
test –z 字符串                                    字符串的长度为零
test 字符串1=字符串2                    字符串相等
test 字符串1!=字符串2               字符串不等
3)判断整数
test 整数1 –eq 整数2                        整数相等
test 整数1 –ge 整数2                        整数1大于等于整数2
test 整数1 –gt 整数2                         整数1大于整数2
test 整数1 –le 整数2                         整数1小于等于整数2
test 整数1 –lt 整数2                          整数1小于整数2
test 整数1 –ne 整数2                        整数1不等于整数2
4)判断文件
test  File1 –ef  File2                            两个文件具有同样的设备号和i结点号
test  File1 –nt  File2                            文件1比文件2 新
test  File1 –ot  File2                            文件1比文件2 旧
test –b File                                           文件存在并且是块设备文件
test –c File                                           文件存在并且是字符设备文件
test –d File                                           文件存在并且是目录
test –e File                                           文件存在
test –f File                                            文件存在并且是正规文件
test –g File                                           文件存在并且是设置了组ID
test –G File                                           文件存在并且属于有效组ID
test –h File                                           文件存在并且是一个符号链接(同-L)
test –k File                                           文件存在并且设置了sticky位
test –b File                                           文件存在并且是块设备文件
test –L File                                           文件存在并且是一个符号链接(同-h)
test –o File                                           文件存在并且属于有效用户ID
test –p File                                           文件存在并且是一个命名管道
test –r File                                            文件存在并且可读
test –s File                                           文件存在并且是一个套接字
test –t FD                                             文件描述符是在一个终端打开的
test –u File                                           文件存在并且设置了它的set-user-id位
test –w File                                          文件存在并且可写
test –x File                                           文件存在并且可执行

test一般有两种格式,即:
test condition

[ condition ]
使用方括号时,要注意在条件两边加上空格。

[root@localhost script]# ll
total 8
-rw-r--r-- 1 root root 1895 Dec 29 20:04 passwd
-rw-r--r-- 1 root root  263 Dec 28 12:12 user
[root@localhost script]# [ -w passwd ]
[root@localhost script]# echo $?
0
[root@localhost script]# test -x passwd
[root@localhost script]# echo $?
1

转载于:https://blog.51cto.com/710561/1346370

第一天 echo test (()) [[]]相关推荐

  1. php获取当月天数及当月第一天及最后一天、上月第一天及最后一天实现方法

    1.获取上个月第一天及最后一天. 上个月第一天: echo date('Y-m-d', strtotime(date('Y-m-01') . ' -1 month')); // 计算出本月第一天再减一 ...

  2. Linux 命令之 echo -- 输出指定的字符串或者变量的值

    文章目录 一.命令介绍 二.命令选项 三.命令示例 (一)输出变量的值 (二)合并上下单元格内容 (三)查看一行第一栏 (四)查看一行的第一和第三栏 (五)结合输出重定向符,将字符串信息导入文件中 ( ...

  3. php 计算本月第一天 本月最后一天 下个月第一天

    出处:http://jin541223.blog.163.com/blog/static/1637398052011111233018533/ 本周第一天(星期日为一周开始)echo  date('Y ...

  4. Ubuntu中shell命令-(4)-echo/tar/which/whereis/ps/kill/top/df/du

    第一,echo 作用:打印信息,类似C语言中的 printf 用法:echo "hello" echo $path (打印path的值) 第二,tar 作用:解压 /压缩(压缩格式 ...

  5. 批处理文件中echo off和echo on的作用

    下面说下批处理文件中的echo off 和echo on的作用 先写一个批处理文件,命令很简单,只是打印语句,如下: rem 我把"执行echo off"和"执行echo ...

  6. centos命令大全

    系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 - (SMBIOS ...

  7. linux常用命令(转载)

    Linux常用命令大全(非常全!!!) 最近都在和Linux打交道,感觉还不错.我觉得Linux相比windows比较麻烦的就是很多东西都要用命令来控制,当然,这也是很多人喜欢linux的原因,比较短 ...

  8. php的方向,PHP面试方向

    [TOC] ## 一些案例代码 `dd()`函数 ~~~ function dd($params) { echo " "; print_r($params); echo " ...

  9. 常用的linux的命令行操作

    2019独角兽企业重金招聘Python工程师标准>>> 系统信息  arch 显示机器的处理器架构(1)  uname -m 显示机器的处理器架构(2)  uname -r 显示正在 ...

最新文章

  1. TEG《选择》乘风破浪 · 披荆斩棘
  2. 关于压缩工具 7z(7-zip) 的选项 -si(从标准输入流读取数据)的解读
  3. Hadoop Balancer运行速度优化
  4. [jQuery原理] jQuery入口函数
  5. 走进 Growth Hacker 的世界
  6. 【Ardunio】开发入门教程【二】数据类型
  7. Spring经典高频面试题,原来是长这个样子
  8. Vectorworks 2022 SP2 for mac(首选3D建筑设计软件)
  9. 栈溢出脚本_CTF必备技能丨Linux Pwn入门教程——栈溢出基础
  10. maven命令行打包
  11. Perl教程-1.Perl简介
  12. C语言入门——适合练手的密码本项目
  13. autojs写的全网视频解析app,带解析接口。
  14. 2015年换工作感想
  15. 软考计算机专业英语,软考计算机专业英语常用词汇(首字母S)
  16. 电影学英语系列:双字幕电影
  17. fzyczn生日赛t1 CZN
  18. 【CSS】如何设置行距、段落间距、缩进格式
  19. oppo计算机怎么添加到桌面,OPPO怎么把快捷方式添加到桌面 OPPO把快捷方式添加到桌面方法...
  20. gitlab快速入门

热门文章

  1. 从2个命令简单聊聊CentOS账户锁定原理
  2. 第四章 - 数据运算
  3. Hibernate中hbm.xml文件的inverse、cascade、fetch、outer-join、lazy
  4. 手把手教你搭建LyncServer2013之发布Office Web App服务器(十二)
  5. ANSI Common Lisp 中文翻譯版 — ANSI Common Lisp 中文版
  6. 虚拟化平台cloudstack(4)——几个异常
  7. Maven仓库管理器
  8. 递归存储过程中使用cursor
  9. 给力的网络 有道的性能——802.11n与WLAN
  10. [转]Zend Framework + Smarty 应用实例