shell语法4-printf命令、test命令和判断符号[]、逻辑运算符&&和||
一、printf命令
printf命令用于格式化输出,类似于C/C++中的printf函数。
默认不会在字符串末尾添加换行符!!!
例如:
printf "%10d.\n" 123 # 占10位,右对齐
printf "%-10.2f.\n" 123.123321 # 占10位,保留2位小数,左对齐
printf "My name is %s\n" "yxc" # 格式化输出字符串
printf "%d * %d = %d\n" 2 3 `expr 2 \* 3` # 表达式的值作为参数
输出结果:
123.
123.12 .
My name is yxc
2 * 3 = 6
二、test命令与判断符号[]
test命令用于判断文件类型,以及对变量做比较。
test命令用exit code返回结果,而不是使用stdout。0表示真,非0表示假!!!
test 2 -lt 3 # 为真,返回值为0
echo $? # 输出上个命令的返回值,输出0
1、文件类型判断
命令格式:
test -e filename # 判断文件是否存在
测试参数 代表意义
-e 文件是否存在
-f 是否为文件
-d 是否为目录
2、文件权限判断
命令格式:
test -r filename # 判断文件是否可读
测试参数 代表意义
-r 文件是否可读
-w 文件是否可写
-x 文件是否可执行
-s 是否为非空文件
3、整数间的比较
命令格式:
test $a -eq $b # a是否等于b
测试参数 代表意义
-eq a是否等于b
-ne a是否不等于b
-gt a是否大于b
-lt a是否小于b
-ge a是否大于等于b
-le a是否小于等于b
4、字符串比较
测试参数 代表意义
test -z STRING 判断STRING是否为空,如果为空,则返回true
test -n STRING 判断STRING是否非空,如果非空,则返回true(-n可以省略)
test str1 == str2 判断str1是否等于str2
test str1 != str2 判断str1是否不等于str2
5、多重条件判定
命令格式:
test -r filename -a -x filename
测试参数 代表意义
-a 两条件是否同时成立
-o 两条件是否至少一个成立
! 取反。如 test ! -x file,当file不可执行时,返回true
6、判断符号[]
[]与test用法几乎一模一样,更常用于if语句中。另外[[]]是[]的加强版,支持的特性更多。
例如:
[ 2 -lt 3 ] # 为真,返回值为0
echo $? # 输出上个命令的返回值,输出0
注意:
(1)[]内的每一项都要用空格隔开
(2)中括号内的变量,最好用双引号括起来
(3)中括号内的常数,最好用单或双引号括起来
例如:
name="acwing yxc"
[ $name == "acwing yxc" ] # 错误,等价于 [ acwing yxc == "acwing yxc" ],参数太多
[ "$name" == "acwing yxc" ] # 正确
三、逻辑运算符&&和||
&& 表示与,|| 表示或
二者具有短路原则:
expr1 && expr2:当expr1为假时,直接忽略expr2
expr1 || expr2:当expr1为真时,直接忽略expr2
表达式的exit code为0,表示真;为非零,表示假。(与C/C++中的定义相反)
shell语法4-printf命令、test命令和判断符号[]、逻辑运算符&&和||的更多相关文章
- Shell教程 之printf命令
上一章节我们学习了 Shell 的 echo 命令,本章节我们来学习 Shell 的另一个输出命令 printf. printf 命令模仿 C 程序库(library)里的 printf() 程序. ...
- shell重温---基础篇(printf命令&test命令)
在shell中还有一个输出的命令,那就是printf了.它模仿的是C程序库(library)里的printf()程序,是由POSIX标准所定义,所以嘞,使用printf脚本比echo移植性要好一点,它 ...
- Shell(三):echo、printf、test命令
一.echo 1.显示普通字符串: echo "today is a wonderful day" 这里的双引号可以省略. 2.显示转义字符: echo "\" ...
- Shell 语法之结构化命令(流程控制)
许多程序在脚本命令之间需要某种逻辑流控制,允许脚本根据变量值的条件或者其他命令的结果路过一些命令或者循环执行这些命令.这些命令通常被称为结构化命令.和其他高级程序设计语言一样,shell提供了用来控制 ...
- shell脚本学习-printf命令
跟着RUNOOB网站的教程学习的笔记 printf命令模仿C程序库里的printf()程序.printf由POSIX标准所定义,因此使用printf的脚本比使用echo有着更好的移植性. printf ...
- Shell脚本字符串匹配及日常命令工具 - 用法总结(技巧指南)
Shell提供了很多字符串和文件处理的命令,如awk.expr.grep.sed等命令,还有文件的排序.合并和分割等一系列的操作命令.下面重点总结下Shell字符串处理.文本处理以及各类命令及函数用法 ...
- shell编程:定义简单标准命令集
shell是用户操作接口的意思,操作系统运行起来后都会给用户提供一个操作界面,这个界面就叫shell,用户可以通过shell来调用操作系统内部的复杂实现,而shell编程就是在shell层次上进行编程 ...
- Linux Shell脚本入门--cut命令
Linux Shell脚本入门--cut命令 cut cut 命令可以从一个文本文件或者文本流中提取文本列. cut语法 [root@www ~]# cut -d'分隔字符' -f fields &l ...
- Shell expr的用法 bc 命令 let命令
Shell expr的用法 bc 命令 let命令 数学运算 let命令 expr命令 bc命令 $(()) $[] http://www.80ops.cn/archives/245. ...
- Linux Shell脚本入门--wget 命令用法详解
Linux Shell脚本入门--wget 命令用法详解 wget是在Linux下开发的开放源代码的软件,作者是Hrvoje Niksic,后来被移植到包括Windows在内的各个平台上.它有以下功能 ...
随机推荐
- vue3 ts遇到的问题
main.ts中的 createApp(App),只作用于一个,如果,有两个,则并不是一个对象,另一个会不生效
- *已解决 java写的简单验证码Servlet实践
目的:java写的简单验证码Servlet实践 总结项目中遇到的问题 提供遇到同样问题的一些(菜鸟的)思路 (代码在最后~) 项目参考:https://www.itdaan.com/blog/2018 ...
- ubuntu20.04安装systemback
sudo add-apt-repository --remove ppa:nemh/systemback sudo apt-key adv --keyserver keyserver.ubuntu.c ...
- STM32F0_HAL初始化系列:串口DMA输出
static void MX_USART1_UART_Init(void) { /* USER CODE BEGIN USART1_Init 0 */ /* USER CODE END USART1_ ...
- shrio
Shrio 页面报错 <link rel="shortcut icon" href="#"/> 简单的安全框架 官网:https://shiro.a ...
- sql注入关键字
id=inurl:Produit.php?id=inurl:Profile_view.php?id=inurl:Publications.php?id=inurl:Stray-Questions-Vi ...
- MongoDB和Elasticsearch的各使用场景对比
MongoDB vs Elasticsearch MongoDB ElasticSearch 备注 定位 (文档型)数据库 (文档型)搜索引擎 一个管理数据,一个检索数据 资源占用 一般 高 mong ...
- 如何基于IM即时通讯SDK从零开发仿微信聊天交友功能
IM即时通讯技术的发展 IM即时通讯(Instant Messaging)是一种基于互联网的即时交流消息的业务. 实时聊天交互功能是市面上主流APP的重要功能之一,人们所熟悉的就是微信,QQ的聊天消息 ...
- Vulhub 漏洞学习之:Drupal
Vulhub 漏洞学习之:Drupal 目录 Vulhub 漏洞学习之:Drupal 1 Drupal < 7.32 "Drupalgeddon" SQL注入漏洞(CVE-2 ...
- Java 文本检索神器 "正则表达式"
Java 文本检索神器 "正则表达式" 每博一文案 在我们短促而又漫长的一生中,我们在苦苦地寻找人生的幸福,可幸福往往又与我们失之交臂, 当我们为此而耗尽宝贵的.青春年华,皱纹也悄 ...