针对文件和目录的逻辑判断

touch .txt
if [ -f .txt ]; then echo ok;fi

-f 判断1.txt是否是文件且是否存在,成立输出ok

if [-d /tmp/ ]; then echo ok;fi

-d 判断tmp是否是目录且存在,成立输出ok

-r,w,x 是否可读写执行

vim if2.sh
#!/bin/bash
read -p "Please input a number:" n
m=`echo $n|sed 's/[0-9]//g'`
if [ -n "$m" ]
then
echo "The character you input is not a number,please retry."
else
echo $n
fi

read -p 给出提示符,赋值给n

变量m=$n然后$n的0-9用空格代替。

如果$m不是空格

输出 The character you input is not a number,please retry.

否则输出 $n

-z和-n相反

if grep -q '^wangshaojun:' /etc/passwd; then echo "wangshaojun exist"; fi

grep -q 不输出结果,只做判断条件。匹配到即成立。

多个判断条件

 if [ -d /tmp/ ] && [ -f .txt ] ; then echo ok;fi
if [ -d /tmp/ ] && [ -f .txt ] && [ -d /usr/ ] ; then echo ok;fi
if [ -d /tmp/ -a -f .txt ] ; then echo ok;fi

-a and

同时成立即输出ok

if [ -d /tmp/ ] || [ -f .txt ] ; then echo ok;fi
if [ -d /tmp/ -o -f .txt ] ; then echo ok;fi

-o  or

一个成立即ok

Shell编程进阶 1.6 if判断的几种用法的更多相关文章

  1. 【转】Shell编程进阶篇(完结)

    [转]Shell编程进阶篇(完结) 1.1 for循环语句 在计算机科学中,for循环(英语:for loop)是一种编程语言的迭代陈述,能够让程式码反复的执行. 它跟其他的循环,如while循环,最 ...

  2. Shell编程进阶篇(完结)

    1.1 for循环语句 在计算机科学中,for循环(英语:for loop)是一种编程语言的迭代陈述,能够让程式码反复的执行. 它跟其他的循环,如while循环,最大的不同,是它拥有一个循环计数器,或 ...

  3. linux shell编程进阶学习(转)

    第一节:基础 ls -lh  ——可以用户友好的方式看到文件大小 file 文件名 ——查看文件类型 stat 文件名 ——查看文件当前状态 man 命令/函数名 ——查看详细的帮助文档 man中看某 ...

  4. Shell编程进阶 2.0 shell中断继续退出

    break    continue   exit break 结束本次for循环 写个for循环脚本 vim for2.sh #!/bin/bash ## 5` do echo $i ] then b ...

  5. Shell编程进阶 1.7 case选择

    逻辑判断的格式 vim case.sh #!/bin/bash read -p "please input a number:" n m=$[$n%] case $m in ) e ...

  6. Shell编程进阶 1.2 shell结构及执行

    创建一个shell脚本 mkdir shell vim first.sh #!/bin/bash ##The first test shell script. ##Written by wangsha ...

  7. Shell编程进阶 2.2 shell数组

    给一个字符指定一个数组 怎么显示数组 a= echo $a a=( ) echo $a echo ${a[@]} echo ${a[*]} 指定显示数组中第几个数字 echo ${a[]} echo ...

  8. Shell编程进阶 2.1 shell函数

    函数 vim fun.sh #!/bin/bash function mysum() { sum=$[$+$] echo $sum } a= b= mysum $a $b sh fun.sh 6 可以 ...

  9. Shell编程进阶 1.9 while循环

    while 死循环 vim while.sh #!/bin/bash ## while : do date +%T sleep done : 永久帧 查看时间 3秒循环1次 打印1-10 #!/bin ...

随机推荐

  1. c++ STL库deque和vector的例子

    头文件wuyong.h: #pragma once #include<iostream> #include<vector> #include<deque> #inc ...

  2. 智课雅思词汇---十八、前缀peri是什么意思

    智课雅思词汇---十八.前缀peri是什么意思 一.总结 一句话总结:前缀:peri- 表示“周围, 靠近” 词根:-peri- [词根含义]:试验,尝试 [词根来源]:英语experience, e ...

  3. AI探索(三)Tensorflow编程模型

    Tensorflow编程模型 ....后续完善 import os os.environ[' import numpy as np num_points = data_array = [] for i ...

  4. CentOS学习笔记(二):检查系统版本号及32位或64位系统

    1.检查系统版本号 lsb_release -a 2.检查32位或64位系统 file /bin/ls

  5. 打印a*a的乘法表

    /*利用for循环打印 9*9 表? 1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16 1*5=5 2*5=10 3*5=15 ...

  6. Leetcode 974. Subarray Sums Divisible by K

    前缀和(prefix sum/cumulative sum)的应用. 还用了一个知识点: a≡b(mod d) 则 a-b被d整除. 即:a与b对d同余,则a-b被d整除. class Solutio ...

  7. signal 信号具体含义解释~

    ) SIGHUP 本信号在用户终端连接(正常或非正常)结束时发出,通常是在终端的控 制进程结束时, 通知同一session内的各个作业,这时它们与控制终端不再关联. ) SIGINT 程序终止(int ...

  8. boost库 bind/function的使用

    Boost::Function 是对函数指针的对象化封装,在概念上与广义上的回调函数类似.相对于函数指针,function除了使用自由函数,还可以使用函数对象,甚至是类的成员函数,这个就很强大了哈 # ...

  9. checking for event2/thread.h... no libevent_pthreads required, failing

    /********************************************************************************** * checking for e ...

  10. 织梦dedecms如何批量替换文章内容和缩略图

    文章来自:http://blog.sina.com.cn/s/blog_475ea1130101co6w.html 第一种方法: 进入后台,点左侧的采集,点选批量维护的数据库内容替换. 1.替换标题内 ...