返回顶部

1-shell基本语法

shell脚本开发规范

1、命名:
要有意义,后缀.sh
2、首行
是而且必须是命令解释器(#!/bin/bash)

3、注释
简单描述脚本信息
4、执行
bash 脚本名称
5、脚本内容
从上到下,依次执行。
6、其他
  成对的符号,成对写,避免丢失
  () {} [] ' '  " "
  流程格式:
  先写完,然后填空
  缩进
  仅仅是表示美观

案例:

创建一个简单的脚本

vi a.sh

代码如下:

#!/bin/bash
echo hi
echo hello 

脚本的执行方式

方式一:
  bash 脚本名称

bash a.sh 

方式二:
  文件的路径

  文件一定要有执行权限

  把权限修改成可执行的权限

chmod +x a.sh 

./a.sh 

  

方式三:

source 脚本名称

保证环境一致性,某个脚本在你自己的笔记本可以执行成功,但是在其他人机器上执行失败,原因就是:环境不一致

source a.sh 

方式四:

注释的使用

单行注释  # 

多行注释格式如下:

:<<!
    注释的内容    
!

创建一个脚本,dir='pwd'中的dir作为一个变量使用

vi a.sh

脚本的代码如下:

#!/bin/bash
:<<!
脚本描述:测试命令行输入
作者:python 13期
版本:v1.0
联系方式:中南海
!
dir=`pwd`
echo $dir

执行脚本

bash ./a.sh

注释的部分没有显示出来

  

基本语法

变量

变量:存储动态值的一个抽象概念

变量包括两部分:
  变量名 不变的
  变量值 变化的

常见的变量有

  本地变量,只在本地有效

  全局变量,在当前的系统下,所有的环境都有效

  内置变量,bash中内置了很多变量,我们可以直接拿过来使用

本地变量:普通变量和命令变量

普通变量

方式一:

  变量名=变量值    变量值必须是一个整体,中间么有特殊字符如(a=a a a)是错的

 

定义一个变量

itcast=nihao 

输出变量

echo $itcast

  

方式二:
  变量名='变量值'   我看到的内容,我就输出什么内容  (注音这是单引号

定义一个变量

itcast1='nihao 666'

输出这个变量

echo $itcast1

方式三:
  变量名="变量值"  如果变量值范围内,有可以解析的变量名A,那么首先解析变量名A,将A的结果和其他内容组合成一个整体,重新赋值给变量B (注音这是双引号

输出一个已经存在的变量

echo $itcast

定义一个变量

注音这里的$itcast是一个变量,它的值如上所示

itcast4="nihao 666-$itcast"

 

输出这个变量

echo $itcast4

方式四:
  "${变量名}"  场景: 标准使用方式,

echo "${itcast}"

执行脚本

echo "${itcast}"

  

命令变量:把linux命令赋值给一个变量

  变量名=`命令`
  变量名=$(命令)

 

执行流程:
1、执行命令
2、将命令执行后的结果,赋值给新的变量名A

定义一个命名变量,注音这不是一个单引号,而是一个反引号,在数字1的左边

dir=`pwd`

 

输出这个变量

echo $dir 

 

相当于执行linux的pwd的命令

定义一个命令变量

dir=$(pwd)

执行命令变量

echo $dir 

相当于pwd

变量的查看

第一种 

  $变量名   使用场景,私下里,在命令行/脚本中使用,图省事

echo $dir 

 第二种

  echo "$变量名"

echo "$dir"

第三种

  ${变量名}  使用场景       echo " dsa  dsafsa  dsafsa ${变量名} f "  双引号里面有变量的话,会先执行里面的变量,把结果在从新赋值

echo "dsd dsd ${dir}"

第四种

  "${变量名}"  使用的场景,标准使用方式,

echo "${dir}"

 

全局变量

全局变量查看方式

env   

set  declare 会把变量的函数也给显示出来

env

  

自定义一个全局变量

方式一:
  1、首先定义一个本地变量
  2、使用export声明这个本地变量为全局变量

itcast5=qiang666

export itcast5

查看自定义的全局变量

env |grep itcast5

 

方式二:
  定义本地变量的同时,使用export声明本地变量为全局变量

自定义一个全局变量

export itcast6=qiang666  

查看自定义的全局变量

env |grep itcast

删除变量

格式:
  unset 变量名

删除上面自定义的两个全局变量

unset itcast5

unset itcast6

查看有没有删除成功

env |grep itcast

内置变量

查看内置变量

man bash

跟脚本文件有关系的变量

"$0" 显示当前脚本的名称

创建一个脚本

vi file1.sh

 代码如下

#!/bin/bash
# 获取脚本的名称
echo "我脚本的名称是: file.sh"
echo "我脚本的名称是:$0"

 执行脚本

bash file1.sh

 

 

使用场景获取当前脚本的使用方式

#!/bin/bash
# 获取脚本的名称
echo "我脚本的名称是: file.sh"
echo "我脚本的名称是:$0"
echo "当前脚本的使用方式是:bash $0"

执行脚本

bash file1.sh 

 

$#  获取当前脚本传入参数的数量

 创建一个脚本

vi num.sh

脚本代码如下

#!/bin/bash
# 获取当前脚本传入的参数数量
echo "当前脚本传入的参数数量是: $#"

执行脚本,传递多个参数

bash num.sh dsd dasd

 $n 获取当前脚本传入的第n个位置的参数

创建一个脚本

vi weizhi.sh

脚本代码如下:

#!/bin/bash
# 获取指定位置的参数
echo "第一个位置的参数是: $1"
echo "第二个位置的参数是: $2"
echo "第三个位置的参数是: $3"
echo "第四个位置的参数是: $4"

执行脚本

bash weizhi.sh sds dsd fgr yty5

  

 

posted @ 2017-11-17 01:42  Crazymagic  阅读(370)  评论(0编辑  收藏  举报