概述

Shell是一个命令行解释器,它接受应用程序/用户命令,然后调用操作系统内核。

Shell解析器

(1)Linux中提供的shell解析器

常用的是sh,bash

(2)bash和sh的关系

sh是软链接到bash,执行sh命令时,实际是执行的bash命令

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

Shell脚本入门

1、脚本格式

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

2、第一个shell脚本

(1)需求:

创建一个Shell脚本,输出Hello,World!

(2)   实操:

创建文件

$ touch helloworld.sh

编写文件

$ vi helloworld.sh
#!/bin/bash
echo "Hello,world!"

第一种:执行文件,本质是bash解析器帮你执行脚本

$ bash helloworld.sh 

第二种:执行文件,本质是脚本需自己执行,所以需要执行权限

$ ll  #查看文件权限
total 1
-rw-r--r-- 1  rsgeno 32 Dec 10 17:14 helloworld.sh
$ chmod 777 helloworld.sh #修改文件权限
$ ./helloworld.sh #执行文件
Hello,world!
$ ll #再次查看文件权限
total 1
-rwxrwxrwx 1  rsgeno 32 Dec 10 17:14 helloworld.sh

2、第二个Shell脚本:多命令处理

(1)需求:

在/home/username/shell目录下创建一个banzhang.txt,在bangzhang.txt文件中增加“I love cls"

(2)实操:

$ touch test5.sh
$ vi test5.sh
$ bash test5.sh
#!/bin/bash
cd /home/yuanjiao/shelltouch bangzhang.txt
echo "I love cls" >>bangzhang.txt

补充:

使用>,执行命令时,如果不存在,会新生成一个>后面的文件,如果存在,则会重写文件

使用>>,执行命令时,如果不存在,会新生成一个>>后面的文件,如果存在,则会在文件后追加

Shell中的变量

1、系统变量

常用的系统变量:$HOME,$PWD,$SHELL,$USER

2、自定义变量

(1)基本语法

a、定义变量,等号两边不能有空格!!!

$ A=1

b、撤销变量

$ unset A

c、声明静态变量,不能被unset

$ readonly A=2

d、把变量提升为全局环境变量,可供其他Shell程序使用

$ export 变量名

(2)变量定义规则

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

b、等号两边不能有空格

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

d、变量的值如果有空格,需要使用双引号或单引号括起来

3、特殊变量:$n

1、基本语法

$n  (功能描述:n为数字,$0代表该脚本名称,$1-$9代表第一到第九个参数,十以上的参数需要用大括号包含,如${10})

2、案例实操

$ touch parameter.sh
$ vi parameter.sh
#!/bin/bash
echo "$0 $1 $2"
$ bash parameter.sh
parameter.sh
$ bash parameter.sh I study shell
parameter.sh I study

4、特殊变量:$#

1、基本语法

$# (功能描述:获取所有输入参数个数,常用于循环)

2、案例实操

$ vi parameter.sh 
#!/bin/bash
echo "$0 $1 $2"
echo $#
$ bash parameter.sh I study shell
parameter.sh I study
3

5、特殊变量:$*、$@

1、基本语法

$* (功能描述:这个变量代表命令行中所有的参数,$*把所有参数看成一个整体)

$@ (功能描述:这个变量也代表命令中所有的参数,不过$@把每个参数区分对待)

后面有例子列举出他们的区别

2、案例实操

#!/bin/bash
echo "$0 $1 $2"
echo $#
echo $*
echo $@
$ bash parameter.sh I want to study shell very well
parameter.sh I want
7
I want to study shell very well
I want to study shell very well

6、特殊变量:$?

1、基本语法

$? (功能描述:最后一次执行命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确了。)

2、案例实操

(1)判断helloworld.sh脚本是否正确执行。

$ bash helloworld.sh
Hello,world!
555
$ echo $?
0

运算符

1、基本语法

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

(2)expr +,-,*,\*,/,% 加,减,乘,除

注意:expr运算符间要有空格

2、案例实操

(1)计算3+2的值

$ expr 3 + 2
5

(2)计算3-2的值

$ expr 3 - 2
1

(3)计算(2+3)x4的值

$ expr `expr 3 + 2` \* 4
20
$ s=$[(2+3)*4]
20

补充:反引号``,首先执行反引号内的内容

[Shell]尚硅谷大数据技术之Shell--笔记(1)相关推荐

  1. 尚硅谷大数据技术Spark教程-笔记01【Spark(概述、快速上手、运行环境、运行架构)】

    视频地址:尚硅谷大数据Spark教程从入门到精通_哔哩哔哩_bilibili 尚硅谷大数据技术Spark教程-笔记01[Spark(概述.快速上手.运行环境.运行架构)] 尚硅谷大数据技术Spark教 ...

  2. 尚硅谷大数据技术Hadoop教程-笔记03【Hadoop-HDFS】

    视频地址:尚硅谷大数据Hadoop教程(Hadoop 3.x安装搭建到集群调优) 尚硅谷大数据技术Hadoop教程-笔记01[大数据概论] 尚硅谷大数据技术Hadoop教程-笔记02[Hadoop-入 ...

  3. 尚硅谷大数据技术Zookeeper教程-笔记01【Zookeeper(入门、本地安装、集群操作)】

    视频地址:[尚硅谷]大数据技术之Zookeeper 3.5.7版本教程_哔哩哔哩_bilibili 尚硅谷大数据技术Zookeeper教程-笔记01[Zookeeper(入门.本地安装.集群操作)] ...

  4. 尚硅谷大数据技术Scala教程-笔记04【集合】

    视频地址:尚硅谷大数据技术之Scala入门到精通教程(小白快速上手scala)_哔哩哔哩_bilibili 尚硅谷大数据技术Scala教程-笔记01[Scala课程简介.Scala入门.变量和数据类型 ...

  5. 尚硅谷大数据技术Spark教程-笔记02【SparkCore(核心编程,map、mapPartitions、mapPartitionsWithIndex、flatMap、glom、groupBy)】

    视频地址:尚硅谷大数据Spark教程从入门到精通_哔哩哔哩_bilibili 尚硅谷大数据技术Spark教程-笔记01[Spark(概述.快速上手.运行环境.运行架构)] 尚硅谷大数据技术Spark教 ...

  6. 尚硅谷大数据技术Spark教程-笔记09【SparkStreaming(概念、入门、DStream入门、案例实操、总结)】

    尚硅谷大数据技术-教程-学习路线-笔记汇总表[课程资料下载] 视频地址:尚硅谷大数据Spark教程从入门到精通_哔哩哔哩_bilibili 尚硅谷大数据技术Spark教程-笔记01[SparkCore ...

  7. 尚硅谷大数据技术Hadoop教程-笔记02【Hadoop-入门】

    视频地址:尚硅谷大数据Hadoop教程(Hadoop 3.x安装搭建到集群调优) 尚硅谷大数据技术Hadoop教程-笔记01[大数据概论] 尚硅谷大数据技术Hadoop教程-笔记02[Hadoop-入 ...

  8. 尚硅谷大数据技术Hadoop教程-笔记01【大数据概论】

    视频地址:尚硅谷大数据Hadoop教程(Hadoop 3.x安装搭建到集群调优) 尚硅谷大数据技术Hadoop教程-笔记01[大数据概论] 尚硅谷大数据技术Hadoop教程-笔记02[Hadoop-入 ...

  9. [Shell]尚硅谷大数据技术之Shell--笔记(3)

    Shell工具 1.cut cut的工作就是"剪",具体的说就是在文件中负责剪切数据用的.cut命令从文件的每一行剪切字节.字符和字段并将这些字节.字符和字段输出 (1)基本用法 ...

最新文章

  1. 智能安防“无芯片不AI”时代来临
  2. 云服务器系统重装为windows,并进行文件传输
  3. 什么插件格式化文档_推荐15款IntelliJ IDEA 神级插件
  4. Flatten Binary Tree to Linked List - LeetCode
  5. Java学习笔记-网络编程
  6. 如何封装并发布一个属于自己的ui组件库
  7. 消息中间件的 Style
  8. HTML5缓存和GPS定位
  9. 【Python成长之路】来聊聊多线程的几位“辅助”
  10. Session Cookie 之我见
  11. 给机器人罗宾写一封英语回信_人教版5年级英语unit1知识
  12. supermicro board bios 升级 超微主板刷 bios
  13. linux rm 回收站,给rm设置回收站
  14. Altium Designer Summer 09快捷键
  15. JAVA版本号的问题——Java版本号与Jdk版本
  16. broadccastreceiver
  17. python3, 计算两个矩形框是否重叠,并计算重叠度
  18. Spring MVC : Property referenced in indexed property path is neither an array nor a List nor a Map
  19. Windows10+Ubuntu双系统安装[多图]
  20. 华为云服务器 网站 要备案吗6,云服务器网站需要备案吗

热门文章

  1. java---JUC并发包详解
  2. 系统穿越频率用matlab,基于Matlab的自动控制系统设计
  3. 推荐Java反编译工具luyten、jd-gui
  4. linux下Hadoop安装与环境配置
  5. SQLServer 服务启动失败
  6. 【01】层次分析法:01-层次分析法模型讲解
  7. 【大数据笔记】hadoop基础——各组件介绍
  8. 【第十三届蓝桥杯省赛B组】统计子矩阵 (枚举前缀和+双指针)
  9. 一文详解:java开发安卓应用
  10. R语言 echarts4r 不显示图形_9本R语言书,从入门到进阶都在这里了!