[Shell]尚硅谷大数据技术之Shell--笔记(1)
概述
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)相关推荐
- 尚硅谷大数据技术Spark教程-笔记01【Spark(概述、快速上手、运行环境、运行架构)】
视频地址:尚硅谷大数据Spark教程从入门到精通_哔哩哔哩_bilibili 尚硅谷大数据技术Spark教程-笔记01[Spark(概述.快速上手.运行环境.运行架构)] 尚硅谷大数据技术Spark教 ...
- 尚硅谷大数据技术Hadoop教程-笔记03【Hadoop-HDFS】
视频地址:尚硅谷大数据Hadoop教程(Hadoop 3.x安装搭建到集群调优) 尚硅谷大数据技术Hadoop教程-笔记01[大数据概论] 尚硅谷大数据技术Hadoop教程-笔记02[Hadoop-入 ...
- 尚硅谷大数据技术Zookeeper教程-笔记01【Zookeeper(入门、本地安装、集群操作)】
视频地址:[尚硅谷]大数据技术之Zookeeper 3.5.7版本教程_哔哩哔哩_bilibili 尚硅谷大数据技术Zookeeper教程-笔记01[Zookeeper(入门.本地安装.集群操作)] ...
- 尚硅谷大数据技术Scala教程-笔记04【集合】
视频地址:尚硅谷大数据技术之Scala入门到精通教程(小白快速上手scala)_哔哩哔哩_bilibili 尚硅谷大数据技术Scala教程-笔记01[Scala课程简介.Scala入门.变量和数据类型 ...
- 尚硅谷大数据技术Spark教程-笔记02【SparkCore(核心编程,map、mapPartitions、mapPartitionsWithIndex、flatMap、glom、groupBy)】
视频地址:尚硅谷大数据Spark教程从入门到精通_哔哩哔哩_bilibili 尚硅谷大数据技术Spark教程-笔记01[Spark(概述.快速上手.运行环境.运行架构)] 尚硅谷大数据技术Spark教 ...
- 尚硅谷大数据技术Spark教程-笔记09【SparkStreaming(概念、入门、DStream入门、案例实操、总结)】
尚硅谷大数据技术-教程-学习路线-笔记汇总表[课程资料下载] 视频地址:尚硅谷大数据Spark教程从入门到精通_哔哩哔哩_bilibili 尚硅谷大数据技术Spark教程-笔记01[SparkCore ...
- 尚硅谷大数据技术Hadoop教程-笔记02【Hadoop-入门】
视频地址:尚硅谷大数据Hadoop教程(Hadoop 3.x安装搭建到集群调优) 尚硅谷大数据技术Hadoop教程-笔记01[大数据概论] 尚硅谷大数据技术Hadoop教程-笔记02[Hadoop-入 ...
- 尚硅谷大数据技术Hadoop教程-笔记01【大数据概论】
视频地址:尚硅谷大数据Hadoop教程(Hadoop 3.x安装搭建到集群调优) 尚硅谷大数据技术Hadoop教程-笔记01[大数据概论] 尚硅谷大数据技术Hadoop教程-笔记02[Hadoop-入 ...
- [Shell]尚硅谷大数据技术之Shell--笔记(3)
Shell工具 1.cut cut的工作就是"剪",具体的说就是在文件中负责剪切数据用的.cut命令从文件的每一行剪切字节.字符和字段并将这些字节.字符和字段输出 (1)基本用法 ...
最新文章
- 智能安防“无芯片不AI”时代来临
- 云服务器系统重装为windows,并进行文件传输
- 什么插件格式化文档_推荐15款IntelliJ IDEA 神级插件
- Flatten Binary Tree to Linked List - LeetCode
- Java学习笔记-网络编程
- 如何封装并发布一个属于自己的ui组件库
- 消息中间件的 Style
- HTML5缓存和GPS定位
- 【Python成长之路】来聊聊多线程的几位“辅助”
- Session Cookie 之我见
- 给机器人罗宾写一封英语回信_人教版5年级英语unit1知识
- supermicro board bios 升级 超微主板刷 bios
- linux rm 回收站,给rm设置回收站
- Altium Designer Summer 09快捷键
- JAVA版本号的问题——Java版本号与Jdk版本
- broadccastreceiver
- python3, 计算两个矩形框是否重叠,并计算重叠度
- Spring MVC : Property referenced in indexed property path is neither an array nor a List nor a Map
- Windows10+Ubuntu双系统安装[多图]
- 华为云服务器 网站 要备案吗6,云服务器网站需要备案吗