Shell笔记

Shell概述

为什么要学习Shell呢?

1)需要看懂运维人员编写的Shell程序。

2)偶尔会编写一些简单Shell程序来管理集群、提高开发效率。

 

Shell解析器

(1)Linux提供的Shell解析器有:

[atguigu@hadoop101 ~]$ cat /etc/shells

/bin/sh
/bin/bash

/sbin/nologin
/bin/dash
/bin/tcsh
/bin/csh

(2)bash和sh的关系

[atguigu@hadoop101 bin]$ ll | grep bash

-rwxr-xr-x. 1 root root 941880 5月  11 2016 bash

lrwxrwxrwx. 1 root root      4 5月  27 2017 sh -> bash

sh是bash的软链接,所以本质的解析器就是bash

(3)Centos默认的解析器是bash

[atguigu@hadoop102 bin]$ echo $SHELL

/bin/bash

Shell脚本入门

1.脚本格式

脚本以  #!/bin/bash  开头(表示需用指定解析器)

2.第一个Shell脚本:helloworld

(1)需求:创建一个Shell脚本,输出helloworld

# 创建脚本
[linux@localhost datas]$ touch helloword.sh 
[linux@localhost datas]$ vim helloword.sh 


#在helloword.sh中输入以下内容
#!/bin/bash
echo "hello word"


# 执行脚本方式1
[linux@localhost datas]$ bash helloword.sh 
hello word


# 执行脚本方式2
[linux@localhost datas]$ ./helloword.sh
-bash: ./helloword.sh: 权限不够

 

(3)脚本的常用执行方式

第一种:采用bash或sh+脚本的相对路径或绝对路径(不用赋予脚本+x权限)

       sh+脚本的相对路径

[atguigu@hadoop101 datas]$ sh helloword.sh

Helloword

       sh+脚本的绝对路径

[atguigu@hadoop101 datas]$ sh /home/atguigu/datas/helloword.sh

helloword

       bash+脚本的相对路径

[atguigu@hadoop101 datas]$ bash helloword.sh

Helloword

       bash+脚本的绝对路径

[atguigu@hadoop101 datas]$ bash /home/atguigu/datas/helloword.sh

Helloword


第二种:采用输入脚本的绝对路径或相对路径执行脚本(必须具有可执行权限+x)

(a)首先要赋予helloworld.sh脚本的+x权限

[atguigu@hadoop101 datas]$ chmod 777 helloword.sh

(b)然后执行脚本

相对路径

[atguigu@hadoop101 datas]$ ./helloword.sh

Helloword

绝对路径

[atguigu@hadoop101 datas]$ /home/atguigu/datas/helloword.sh

Helloword

注意:第一种执行方法,本质是bash解析器帮你执行脚本,所以脚本本身不需要执行权限。第二种执行方法,本质是脚本需要自己执行,所以需要执行权限。

3.第二个Shell脚本:多命令处理

(1)需求:在/home/atguigu/目录下创建一个banzhang.txt,在banzhang.txt文件中增加“I love cls”。

(2)案例实操:

[atguigu@hadoop101 datas]$ touch batch.sh

[atguigu@hadoop101 datas]$ vi batch.sh

batch.sh脚本中输入如下内容

#!/bin/bash

cd /home/atguigu

touch cls.txt

echo "I love cls" >>cls.txt

Shell中的变量

常用系统变量

$HOME、$PWD、$SHELL、$USER

[linux@localhost datas]$ echo $HOME
/home/linux
[linux@localhost datas]$ echo $PWD
/home/linux/datas
[linux@localhost datas]$ echo $SHELL
/bin/bash
[linux@localhost datas]$ echo $USER
linux

自定义变量

 基本语法

(1)定义变量:变量名=值

       $ A=1

       即“$ echo $A”   返回的值就是定义的“1”

(2)撤销变量:unset 变量名

       $ unset A               (就能成功删除定义的变量A)

(3)输出变量

       echo $变量

(4)声明只读静态变量:readonly变量,(注意:不能unset)

变量定义规则

(1)变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建议大写

(2)等号两侧不能有空格

(3)在bash中,变量默认类型都是字符串类型,无法直接进行数值运算。

(4)变量的值如果有空格,需要使用双引号或单引号括起来。

案例实操

(1)定义变量A

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值