加入收藏 | 设为首页 | 会员中心 | 我要投稿 宁德站长网 (https://www.0593zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Windows > 正文

这些必备的Linux shell知识你都掌握了吗

发布时间:2019-06-11 05:43:40 所属栏目:Windows 来源:守望先生
导读:副标题#e# 前言 在linux下使用shell编程常常能够极大简化我们的工作。而下面这些必备的知识你是否都掌握了呢? 入参和默认变量 对于shell脚本而言,有些内容是专门用于处理参数的,它们都有特定的含义,例如: /home/shouwang/test.shpara1para2para3 $0$1$

初学者特别需要注意以下几点:

  •  []前面要有空格,它里面是逻辑表达式
  •  if elif后面要跟then,然后才是要执行的语句
  •  如果想打印上一条命令的执行结果,最好的做法是将 $?赋给一个变量,因为一旦执行了一条命令,$?的值就可能会变。
  •  case每个分支最后以两个分号结尾,最后是case反过来写,即esac。

多个条件如何使用呢,两种方式,方式一:

  1. if [ 10 -gt 5 -o 10 -gt 4 ];then  
  2.     echo "10>5 or 10 >4"  
  3. fi 

方式二:

  1. if [ 10 -gt 5 ] || [ 10 -gt 4 ];then  
  2.     echo "10>5 or 10 >4"  
  3. fi 

其中-o或者||表示或。这里也有一些常见的条件判定。

总结如下:

  •   o or 或者,同||
  •  -a and 与,同&&
  •  ! 非

整数判断:

  •  -eq 两数是否相等
  •  -ne 两数是否不等
  •  -gt 前者是否大于后者(greater then)
  •  -lt 前面是否小于后者(less than)
  •  -ge 前者是否大于等于后者(greater then or equal)
  •  -le 前者是否小于等于后者(less than or equal)

字符串判断str1 exp str2:

  •  -z "$str1" str1是否为空字符串
  •  -n "$str1" str1是否不是空字符串
  •  "$str1" == "$str2" str1是否与str2相等
  •  "$str1" != "$str2" str1是否与str2不等
  •  "$str1" =~ "str2" str1是否包含str2

特别注意,字符串变量最好用引号引起来,因为一旦字符串中有空格,这个表达式就错了,有兴趣的可以尝试当str1="hello world",而str2="hello"的时候进行比较。

文件目录判断:filename

  •  -f $filename 是否为文件
  •  -e $filename 是否存在
  •  -d $filename 是否为目录
  •  -s $filename 文件存在且不为空
  •  ! -s $filename 文件是否为空

循环

循环形式一,和Python的for in很像:

  1. #遍历输出脚本的参数  
  2. for i in $@; do  
  3.   echo $i  
  4. done 

循环形式二,和C语言风格很像:

  1. for ((i = 0 ; i < 10 ; i++)); do  
  2.   echo $i  
  3. done 

循环打印0到9。

循环形式三:

  1. for i in {1..5}; do  
  2.     echo "Welcome $i"  
  3. done 

循环打印1到5。

循环方式四:

  1. while [ "$ans" != "yes" ]  
  2. do  
  3.    read -p "please input yes to exit loop:" ans  
  4. done 

只有当输入yes时,循环才会退出。即条件满足时,就进行循环。

循环方式五:

  1. ans=yes  
  2. until [ $ans != "yes" ]  
  3. do  
  4.    read -p "please input yes to exit loop:" ans  
  5. done 

这里表示,只有当ans不是yes时,循环就终止。

循环方式六:

  1. for i in {5..15..3}; do  
  2.     echo "number is $i"  
  3. done 

每隔5打印一次,即打印5,8,11,14。

函数

定义函数方式如下:

  1. myfunc()   
  2. {  
  3.     echo "hello world $1"  

或者:

  1. function myfunc()   
  2. {  
  3.     echo "hello world $1"  

函数调用:

  1. para1="shouwang"  
  2. myfunc $para1 

返回值

(编辑:宁德站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!