初识shell编程

一.认识shell

  1.什么是shell

Shell 是一个命令行解释器,,他为用户提供一个向Linux内核发送请求以便运行程序的界面系统,用户可以用shell来启动,挂起,关闭甚至停止编写一些程序.

  

  2.shell的编写

1. shell以#!/bin/bash开头  (告诉系统用那个shell)

  3.shell的执行

1. 让文件有可执行权限: chmod u=rxw 文件名
2. 执行
 方式一:
  • 相对路径: ./文件名称
  • 绝对路径: ./etc/xx/xx  

方式二:

  不需要文件有可执行权限,直接:sh 文件路径

 

方式一用的比价多

 

二.shell的变量介绍

    1.shell变量介绍

1.Linux Shell中变量分为系统变量和用户自定义变量

2.系统变量:系统定义好的:$HOME,$PWD,$PATH,$USER等,比如echo $PATH


  
      

3.查看系统所有环境变量: set

4.shell用户自定义变量:
  1. 定义变量: 变量名=变量值
  2. 撤销变量unset
  3. 静态变量: 静态变量不能撤销
   
    

  
 

   2.变量的命名规则

1.变量名称可以由字母,数字,下划线组成,但是不能以数字开头
2.等号两侧不能有空格

3.变量名一般习惯大写

  3.将命令的返回值赋值给变量

1. A=`ls /home ` 将命令执行结构赋值给A, echo $A

2. A=$(ls /home) 等价于反引号 echo 'A=$A'

 

 

三.设置环境变量

  1.基本语法

1.export 变量名=变量值            (将shell变量输出为一个环境变量)

2.source 配置文件          (刷新配置文件,让设置生效)

3.echo $变量名 (查询环境变量的值)

  
       

   

  
    


   2.位置参数

1. 基本语法:$n(功能描述:n为数字,$0代表本身,$1~$9代表第一到第九个参数,十以上的参数需要用花括号包含${10},
2. $* 这个变量代表命令行中所有的参数,$*把所有参数看成一个和整体
3. $@这个变量也代表命令行中所有参数,不过把每个参数区分对待
4. $# 这个变量代表命令行所有参数的个数

    

    
 
 

 

四.预定义变量

  shell设计者预先设计好的变量,可以在shell脚本中直接是使用:

1. $$ 当前进程号

2. $! 后台运行的最后一个进程的进程号

3.$? 最后一次执行命令返回的状态 0你代表执行成功,非0代表不正确
  
  

  


 

 

五.运算符

  1.基本语法

1. "$((运算式))" 或者 $[运算式]

2.expr m + n
  注意:expr和运算符之间要有空格
3.expr m - n

4.expr \*,/,% 乘除取余,第一个值转义符

  
  
 
 

 

 

六.判断语句

  1.基本语法

[condition] 注意condition前后要有空格
  非空返回true,可使用$?验证(0为true,>1为false)

  2.常用判断条件:

    1.数字

-eq检测两个数是否相等,相等返回 true。[ $a -eq $b ] 返回 false。
-ne检测两个数是否不相等,不相等返回 true。[ $a -ne $b ] 返回 true。
-gt检测左边的数是否大于右边的,如果是,则返回 true。[ $a -gt $b ] 返回 false。
-lt检测左边的数是否小于右边的,如果是,则返回 true。[ $a -lt $b ] 返回 true。
-ge检测左边的数是否大于等于右边的,如果是,则返回 true。[ $a -ge $b ] 返回 false。
-le检测左边的数是否小于等于右边的,如果是,则返回 true。[ $a -le $b ] 返回 true。

      2.字符串

      

-b file检测文件是否是块设备文件,如果是,则返回 true。[ -b $file ] 返回 false。
-c file检测文件是否是字符设备文件,如果是,则返回 true。[ -c $file ] 返回 false。
-d file检测文件是否是目录,如果是,则返回 true。[ -d $file ] 返回 false。
-f file检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回 true。[ -f $file ] 返回 true。
-g file检测文件是否设置了 SGID 位,如果是,则返回 true。[ -g $file ] 返回 false。
-k file检测文件是否设置了粘着位(Sticky Bit),如果是,则返回 true。[ -k $file ] 返回 false。
-p file检测文件是否是有名管道,如果是,则返回 true。[ -p $file ] 返回 false。
-u file检测文件是否设置了 SUID 位,如果是,则返回 true。[ -u $file ] 返回 false。
-r file检测文件是否可读,如果是,则返回 true。[ -r $file ] 返回 true。
-w file检测文件是否可写,如果是,则返回 true。[ -w $file ] 返回 true。
-x file检测文件是否可执行,如果是,则返回 true。[ -x $file ] 返回 true。
-s file检测文件是否为空(文件大小是否大于0),不为空返回 true。[ -s $file ] 返回 true。
-e file检测文件(包括目录)是否存在,如果是,则返回 true。[ -e $file ] 返回 true。

 

  实例:

      
 
 

 

七.流程控制

  1.if流程控制

方式一:
if [condition];then
  程序
fi

方式二:
if [condition]
  then
    程序
elif [condition]
then
  程序
fi
      

  2.case流程控制

case $变量名 in
"值1")
如果变量值等于值1执行这条语句
echo "xxx"
;;
"值2")
echo "yy"
如果变量值等于值2执行这条语句
;;
*)
其他所有变量值执行这条
;;
esac

 
 

   3.for循环流程控制

for 变量 in 值1 值2 值3
  do
    程序
done

和python一样,遍历



for((初始值,循环控制条件,变量变化))
do
  程序
done


 
 

  4.while循环

while [condition]
do
  程序
done

      

八.读取控制台输入

read (选项)(参数)
选项:
  -p:指定读取指时提示符
  -t:指定读取是的等待的时间(秒)如果没有在指定时间内输入我就不等待了
参数:
  变量:指定读取的变量名
  

 

九.函数

  1.系统函数

1. basename 文件名  返回完整路径/后面的文件,成用于获取文件名 如果再加上文件后缀,可以返回文件名

2. dirname 和上面相反,返回的是除文件名外的绝对路径
  

  2.自定义函数

function funcname()
{
  Action

  }

#定义的时候不要函数不需要形参,很奇怪的

调用:
  
    
 
 

 

                              

转载于:https://www.cnblogs.com/tjp40922/p/10540846.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值