技术标签: shell
Shell 脚本中经常用到字符串,对字符串是否为空的判断很关键。
在 Shell 中利用 -n
来判断字符串是否非空。
例子:
if [[ str1 = str2 ]] # 当字符串 str1 和 str2 有相同内容、长度时为真
if [[ str1 != str2 ]] # 当字符串 str1 和 str2 不等时为真
if [[ -n "str1" ]] # 当字符串 str1 的长度大于 0(非空)时为真
if [[ -z "str1" ]] # 当字符串 str1 的长度为 0(空)时为真
if [[ str1 ]] # 当字符串 str1 为非空时为真
错误用法:
str1=$*
if [[ -n $str1 ]];then
print "with str1"
else
print "without str1"
fi
这种情况下不管传不传参数,总会进入 if 里面,因为不加 ""
时该 if 语句等效于 if [ -n ]
,shell 会把它当成 if [ str1 ]
来处理,-n
这个字符串不为空,所以会进入 if 里面。
正确用法:
需要在 $str1
上加入双引号,即 "$str1"
。
str1=$*
if [[ -n "$str1" ]];then
print "with str1"
else
print "without str1"
fi
在 Shell 脚本中如果有 rm -rf ${path}
这种操作,尽量在执行前先判断变量 path
不为空,如果 path
为空,等同于执行 rm -rf /
,除此之外,在 Bash 的变量扩展语法中,可以用 rm -rf ${path:?ERROR}/*
的形式判断变量是否定义或为空,当变量未定义或为空时自动停止执行脚本,这样可以避免执行全局删除操作。
文章浏览阅读1.3k次。timesat软件怎么装怎么用?一起来看看吧一、TimeSat 3.1软件安装;本文讲解TimeSat 3.1软件在Windows和Matlab平台的安装。1、打开Matlab 2011,点击菜单中的File→Set Path,如下如下图所示的对话框,点击Add with Subfolders,定位到TimeSat3.1所在的位置,点击确定。2、打开Matlab命令窗口Command Window..._timesat
文章浏览阅读1k次,点赞18次,收藏22次。今天我们从几个方面来比较一些现在流行的两个 python web 框架——Flask 和 Django,突出它们的主要特性、优缺点和简单案例到最后,大家将更好地了解哪个框架更适合自己的特定需求Python web 框架各式各样,但 Flask 和 Django 是最流行的两种。选择 Flask 还是 Django 取决于各种因素:比如项目规模、复杂性、可伸缩性需求和个人偏好Flask 它被设计得尽可能简约,它是小型项目、RESTful api和快速原型设计的轻量级灵活选择。_flask vs django
文章浏览阅读340次。交互设计是现代产品设计中至关重要的领域,它不仅关乎用户与产品的互动方式,还直接影响着用户体验的质量和产品的成功与否。我们将提供教程、解答常见问题、思考交互设计的重要性,并分享有关学习交互设计的链接。教程1:交互设计基础入门 本教程将介绍交互设计的基本原理和概念,包括用户中心设计、可用性原则、信息架构等。教程2:设计人性化的交互体验 在这个教程中,我们将深入研究如何设计出人性化的交互体验。在这篇文章中,您将了解到情感设计在交互设计中的重要性,并学习如何创造出引人入胜的用户体验。链接2:情感设计的艺术与科学(
文章浏览阅读613次。博主环境(所有文件都在最底下):Unity环境:2018.1.0b11(64bit) java环境:jdk 1.8, netty环境:netty-all-4.1.16.Final.jar protobuf环境:protobuf-java-3.3.0 python环境:python 2.7网络协议:使用简单的协议一段完整的数据,前4位byte是数据总长度,向后偏移4位是proto...
文章浏览阅读739次,点赞2次,收藏8次。在进行电商测试过程中,会遇到持续加压并且运行一段时间后,缓慢释放压力的情况,对于这种可以使用阶梯压测(jp@gc-Stepping Thread Group)_jmeter阶梯加压参数如何设置比较好
文章浏览阅读98次。转 自 :http://www.ehow.com/how_8658327_convert-ppk-ssh-ubuntu.html1Open a terminal window in Ubuntu, or log in if you are converting the keys on a remote Ubuntu server.2Type "sud..._ubpkrpp
文章浏览阅读122次。Eurek-client 客户端需要增加依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>_eureka注册时为什么要导入web依赖
文章浏览阅读583次。所以,在this.component实例内部的方法中,this.env中的属性会包含更多属性。但是View没有构造函数,无法接收构造传参,就有父类Component来接管。this.component是视图类C的实例,C一般是类View。1 env变量的创建。3 传给组件节点实例。_odoo16修改前端代码
微隔离(Micro Segmentation),作为一种前沿的网络安全技术,其核心目标在于精准地隔离数据中心内部的东西向流量。这一技术的实现原理是将数据中心内部的各类业务,遵循特定原则,细致划分为众多微小的网络节点。这些节点通过动态策略分析进行访问控制,从而在逻辑层面上实现相互隔离,有效限制用户的横向移动,确保了网络环境的稳定与安全。在微隔离的架构下,传统的内、外网概念已然不再适用。相反,数据中心网络被精细地隔离为众多微小的计算单元,我们称之为节点。
文章浏览阅读1k次。SurfaceFlinger在系统启动阶段作为系统服务被加载。应用程序中的每个窗口,对应本地代码中的Surface,而Surface又对应于 SurfaceFlinger中的各个Layer,SurfaceFlinger的主要作用是为这些Layer申请内存,根据应用程序的请求管理这些 Layer显示、隐藏、重画等操作,最终由SurfaceFlinger把所有的Layer组合到一起,显示到显示器上。当一个应用程序需要在一个 Surface上进行画图操作时,首先要拿到这个Surface在内存中的起始地_android getpagestacksize()
文章浏览阅读472次。业务组件的基础,所有业务组件必须基于该组件进行开发,提供一站式开发。_android mvvm实例
文章浏览阅读5.3k次。FM收音机入门FM收音机基础知识FM的调制和解调FM收音机基础知识调制分为三种:调幅(AM),调频(FM)和调相。收音机的全部频率是指包含短波、中波、长波、航空和调频波段,全部频率从100hz-2.4ghzSW是短波,在10~100米(公尺)之间。中波(MW)介于200-600米(公尺)之间,150KHz-284KHz之间的叫长波数值就表示电磁波的频率。FM中国为87-108MHz、..._广播信号经过解调后的波形