shell的作用:




环境:

平台:VMware workstation 14

系统:CentOS Linux release 7.4.1708 (Core)


编写第一个shell脚本:

     注: sh为脚本格式   first为脚本的名称 

  first脚本中的内容

给所有人加权


shell脚本的执行方式:

1 脚本的路径

     绝对路径 

           

     相对路径

               

   注:必须脚本文件要有执行权限

          

2      sh 脚本文件路径

      

     注: 如果脚本文件在opt目录下,  则: sh /opt/first.sh   /  先cd /opt  再 sh first.sh


3    source 脚本路径

    



注:2 -a 3可以不需要执行权限   1必须要



编写第二个shell脚本:

shell脚本的构成:

 1  脚本声明

  #!/bin/bash   声明后面的命令可以通过此shell程序去解释并执行

 2  注释信息

   摘要,脚本作用,参数说明,工作效率,创建日期,作者,版本声明,第几次修改,每次返回的动态值的定义等

 3  可执行的命令语句

    注:所有特殊符号必须是英文模式输入

实例1:新建文件



实例2:删除文件

实例3:创建用户

cat /etc/passwd

实例4: 创建指定容量的文件


实例5: 计划任务

crontab -e

每天的下午1点半执行2.sh这个脚本一次



更友好的显示脚本内容:




重定向与管道操作:


实例6:使用密码文本文件 修改用户密码  


解:  创建一个密码文件passwd.txt  密码为:123456

tom为已有用户,将密码文件导给tom 实现重置tom的密码为123456


实例7:

将ls这条命令的输出保存到 1.txt文件中


> 覆盖原有的内容

>>  追加


实例8:


将标准输出1.txt  标准错误输出2.txt中



实例9:




shell变量的作用,类型


自定义变量

  1. 声明变量不需要声明类型

  2. 可以存储不同类型内容 A=wa1

  3. 有时候使用变量时要明确变量类型

  4. 严格区分大小写

  5. 等于号两边不允许出现空格

  6. 不能使用标点符号作为变量名

  7. 不能使用bash里面的关键字作为变量名

  8. 首个字符必须是字母(a-z A-Z或_)


格式   变量名=变量值

查看变量:

     echo $变量名

     echo ${变量名}


通过echo进行一个输出变量,其中$是引用变量的特殊字符(必须要使用$符号)


注:echo和调用的变量之间必须要有空格

       当需要一起调用多个变量时,以空格隔开

        当变量名和后面的字符混淆的时候,应使用{ }将变量名括起来



变量赋值的特殊操作:

1 双引号 ""

   当变量值之间有空格的时候,要使用""括起来

2 单引号 ' '

禁止引用变量值,将$符号当作普通字符来使用

3 反撇号 ``

与$() 效果一样

作用:命令替换,提取命令执行的结果


优先执行反撇号里面的内容,再执行其他

变量赋值的时候,如果想要赋值的是某条命令执行的结果,必须使用反撇号

缺点:反撇号部不是现嵌套命令替换操作,这时候使用$()来替换


4 交互式赋值 read

read 命令用于提示用户输入信息,从而实现简单交互过程(输入命令就是一个交互式过程)

多个变量名交互式赋值,赋值之间有空格,变量名也有空格

为了更友好,通常使用-p 来提示信息


5 设置变量的作用范围

export  变量名 ...

export 变量名=变量值

作用:设置全局变量,所有子shell程序都可以使用此变量

注:bash为切换环境 export导为全局变量


永久生效:

vi /etc/profile

export 变量名=变量值

source /etc/profile



整数变量的运算

expr 变量1 运算符 变量2 ...   

$(())          ++  --  **

 

    常用变量:

         +   -    \*    /   %




环境变量


配置文件:

全局

单用户:




 常见的环境变量

PWD :显示当前所在的工作目录

USER :  显示用户名称  可以查看当前登陆的用户

HOME:  用户的家目录 显示当前用户的家目录

LANG: 语言和字符集变量 

PATH: 命令搜索路径  , 可以用tab键补全

PS1: 提示符变量

SHELL:shell程序




位置变量

预定义变量