Linux shell if [ -n ] 正确使用方法

if [ str1 = str2 ]       当两个串有相同内容、长度时为真 
if [ str1 != str2 ]      当串str1和str2不等时为真 
if [ -n str1 ]       当串的长度大于0时为真(串非空) 
if [ -z str1 ]        当串的长度为0时为真(空串) 
if [ str1 ]         当串str1为非空时为真

shell 中利用 -n 来判定字符串非空。

错误用法:

ARGS=$*

if [ -n $ARGS  ]

then

print "with argument"

fi

print " without argument"

不管传不传参数,总会进入if里面。

原因:因为不加“”时该if语句等效于if [ -n ],shell 会把它当成if [ str1 ]来处理,-n自然不为空,所以为正。

正确用法:需要在$ARGS上加入双引号,即"$ARGS".

ARGS=$*

if [ -n "$ARGS"  ]

then

print "with argument"

fi

print " without argument"

时间: 2024-10-18 16:28:04

Linux shell if [ -n ] 正确使用方法的相关文章

Mac / Linux Shell 批量重命名的方法总览

Linux Shell 批量重命名的方法总览 0.用类似 GPRename 这样的图形软件进行批量重命名 1.删除所有的 .bak 后缀: rename 's/\.bak$//' *.bak 2.把 .jpe 文件后缀修改为 .jpg: rename 's/\.jpe$/\.jpg/' *.jpe 3.把所有文件的文件名改为小写: rename 'y/A-Z/a-z/' * 4.将 abcd.jpg 重命名为 abcd_efg.jpg: for var in *.jpg; do mv "$var

linux shell 按行循环读入文件方法

转http://blog.csdn.net/hittata/article/details/7042779 #/bin/bash printf "*************************************\n" echo " cat file whiel read line"   cat test.txt |while read line   do   echo $line;   done   printf "***************

Linux shell逐行读取文件的方法

Linux shell逐行读取文件的方法 在Linux中有很多方法逐行读取一个文件的方法,其中最常用的就是下面的脚本里的方法,而且是效率最高,使用最多的方法.为了给大家一个直观的感受,我们将通过生成一个大的文件的方式来检验各种方法的执行效率. 方法1:while循环中执行效率最高,最常用的方法. function while_read_LINE_bottm(){ While read LINE doecho $LINEdone  < $FILENAME}         注释:我习惯把这种方式叫

linux shell的输出效果修改方法(界面颜色)

文本终端的颜色可以使用“ANSI非常规字符序列”来生成.举例: echo -e "\033[44;37;5m ME \033[0m COOL" 以上命令设置背景成为蓝色,前景白色,闪烁光标,输出字符“ME”,然后重新设置屏幕到缺省设置,输出字符 “COOL”.“e”是命令 echo 的一个可选项,它用于激活特殊字符的解析器.“\033”引导非常规字符序列.“m”意味着设置属性然后结束非常规字符序列,这个例子里真正有效的字符是 “44;37;5” 和“0”. 修改“44;37;5”可以生

Linux shell if条件语句使用方法

shell if -b    当file存在并且是块文件时返回真-c    当file存在并且是字符文件时返回真-d    当pathname存在并且是一个目录时返回真-e    当pathname指定的文件或目录存在时返回真-f     当file存在并且是正规文件时返回真-g     当由pathname指定的文件或目录存在并且设置了SGID位时返回为真-h     当file存在并且是符号链接文件时返回真,该选项在一些老系统上无效-k     当由pathname指定的文件或目录存在并且设

QT下实现对Linux Shell调用的几种方法

使用QProcess QThread ============================================ #include <QProcess>int main(){QProcess::execute("ls");return 0;} ============================================   QProcess *poc = new QProcess; poc-> start( "ping 222.20

Linux shell 字符串切割 内置方法

$myStr="node=slave-01:2.05:1.25:1.00" $time tmp=${myStr%%:*};echo ${tmp##*=} real 0m0.000s user 0m0.000s sys 0m0.000s slave-01 ${string#*pattern}        从左边开始最小化匹配pattern ,并删除(从左边开始)第一个pattern及其左边字串 ${string##*pattern}     从左边开始最大化匹配pattern,并删除(

Linux Shell 生成随机数和随机字符串

日常生活中,会经常用到随机数,使用场景非常广泛,例如买彩票.丢骰子.抽签.年会抽奖等. Shell 下如何生成随机数呢,米扑博客特意写了本文,总结 Linux Shell 产生随机数的多种方法. 本文原文转自米扑博客:Linux Shell 生成随机数和随机字符串 计算机产生的的只是"伪随机数",不会产生绝对的随机数(是一种理想随机数).实际上,伪随机数和理想随机数也是相对的概念,例如伪随机数在1万万亿亿亿年内也无法重复,算是理想随机数么? 伪随机数在大量重现时也并不一定保持唯一,但一

Linux中执行shell脚本的4种方法

这篇文章主要介绍了Linux中执行shell脚本的4种方法总结,即在Linux中运行shell脚本的4种方法,需要的朋友可以参考下. bash shell 脚本的方法有多种,现在作个小结.假设我们编写好的shell脚本的文件名为hello.sh,文件位置在/root/bin目录中并已有执行权限(添加权限的方法:chmod +x hello.sh). 方法一:切换到shell脚本所在的目录(此时,称为工作目录)执行shell脚本: ./ 的意思是说在当前的工作目录下执行hello.sh.如果不加上