1.1 什么是脚本语言

脚本语言是像剧本一样教计算机办某个事情的语言,通过脚本指令,让计算机自动化完成一系列工作的程序,脚本程序通常可以用文本编辑器修改,不需要编译,通常是解释运行的。

比如你想让计算机执行复制某个文件的操作,如:cp ~/Desktop/*.txt ~/text

你可以在文本编辑器写入上边的代码并且保存此文件,然后你通过执行这个文本文件来执行上面的代码,并不需要重复手动输入上边的代码。

脚本解释器: 脚本解释器是把脚本代码翻译成计算机看的懂得二进制语言 ,就好像你写了一段中文,要给别人解释,需要参照新华字典,写一段英文,需要参照牛津字典解释,脚本解释器就是这个功能。

1.2 什么是Sell

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

Shell 是 linux 命令解释器。当我们向 linux 的命令行输入一个命令时,比如:pwd、ls 等,shell 负责将该命令翻译成机器可以识别的二进制语言,并把机器的反馈输出出来,供我们识别阅读

shell 脚本(shell script),是一种为 shell 编写的脚本程序。我们所说的 shell 通常都是指 shell 脚本编程

我们正常的设备。首先内部是硬件,然后外部是操作系统或者内核,在此基础上有了外层应用程序。

而应用程序想要操作内核,需要通过编写Shell程序(命令行解释器),然后来操作内核程序。也就是Shell给用户提供了访问操作系统内核的服务

Shell 是一种解释型的高级语言。它像其它高级语言一样,定义了变量和参数、提供了分支、循环等控制语句,能够完成一个系列动作,简化我们对系统的管理与应用的部署。

1.3 扩展名

Shell 程序不要求有扩展名,任何扩展名都可以作为Shell脚本,你可以用 .txt 来编写shell脚本,也可以用.c来写,但是为了方便我们分辨,我们一般用.sh 来做扩展名

1.4 注释

Shell用#做为单行注释。与 c 语言的//相当。(#!除外。)

多行注释:

:<<!
# 注释内容块
!

举例:

#!/bin/bashecho "hello"
:<<!
echo "1"
echo "2"
!
echo "3"

1.5 Shell脚本环境

运行Shell需要两个东西:一个能编写代码的文本编辑器和一个能解释执行的脚本解释器

在编写好shell脚本之后,需要脚本解释器把shelll脚本转换成机器可以识别的二进制语言

Linux的Shell解释器有很多种:

  • Bourne Shell(/usr/bin/sh或/bin/sh)
  • Bourne Again Shell(/bin/bash)
  • C Shell(/usr/bin/csh)
  • K Shell(/usr/bin/ksh)
  • Shell for Root(/sbin/sh)

我们应该在程序的第一行,指明用哪个脚本解释器。如不指明的话,使用默认的 shell:/bin/bash。 Bash 也是大多数Linux 系统默认的 Shell。

Shell脚本以 #! 开头(#!指定bath解析器) ,

#!/bin/bash 表示用bath解析器来解析Shell脚本

1.6 执行Shell脚本

执行Shell脚本,可以采用以下几种方式

1.sh、bash命令

sh FileName.sh
或
bash FileName.sh

2 绝对路径或者相对路径运行

首先要 chmod +x file.shchmod 777 file.sh加上执行权限,否则会提示无执行权限。

#相对路径
./FileName.sh
#绝对路径
/home/zzx/FileName.sh

注意执行脚本时候或者绝对路径,或者 ./file.sh ,如果不加的话,linux 默认会从PATH 里去找该 file.sh。
就是不能 FileName.sh 直接运行Shell脚本。

# 错误
FileName.sh

1.7 编写一个Shell脚本

要求:

在/home/zzx目录下创建一个hello.txt文件,在hello.txt文件中添加,"Hello,World"

1.4.1 创建 batch.sh 脚本文件

zzx@zzx-t:~$ touch batch.sh
zzx@zzx-t:~$ vim batch.sh

1.4.2 编写Shell脚本

#!/bin/shellcd /home/zzx
touch hello.txt
# >>重定向 把echo输出的内容重定向到hello.txt
echo "Hello,World" >> hello.txt

1.4.3 运行Shell脚本

bash batch.sh


1.4.4 打开文件,输出Hello,World

2. Shell变量

Shell中有三种变量 用户变量,系统变量和特殊变量

2.1 Shell常用系统变量

使用 env 可以显示全部的系统变量

  • &HOME

获取用户当前的家目录

  • &PWD

获取当前的工作路径/绝对路径

  • &SHELL

获取Shell脚本的解析器

  • &USER

获取当前用户名

2.2 自定义变量(用户变量)

Shell 中的变量,不用声明,直接定义使用就可以。

Shell 中变量都是字符串型,如果需要用整形,要特殊声明。

基本语法:

  • 定义变量: 变量名=值
  • 撤销变量 unset 变量名
  • 声明静态变量 readonly 变量名 PS:静态变量不能unset撤销
  • 声明环境变量 export 变量名

命名规则:

  1. 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
  2. 等号两侧不能有空格 这个是区别于其他语言的一点
  3. 不能使用标点符号。
  4. 不能使用bash里的关键字(可用help命令查看保留关键字)。

用$符号,就可以得到变量的值
echo 输出函数 等于C语言的printf

2.3 特殊变量

  • $#:传给 shell 脚本参数的数量。

  • $*:传给 shell 脚本参数的内容。

  • $1、$2、$3、$4、$5:运行脚本时,传给程序的参数,用空格分开。

  • $?:命令执行的返回的状态。0 表示正确,非 0 表示出错。

  • $0:当前执行的进程名。

  • $$:当前进程的进程号。

变量详细内容在第二节

【Shell教程】一----什么是Shell相关推荐

  1. linux中的shell有printf吗,Linux Shell系列教程之(八)Shell printf命令详解

    在上一篇:Linux Shell系列教程之(七)Shell输出这篇文章中,已经对Shell printf命令有了一个简略的介绍,本篇给大家详细介绍下Shell中的printf命令. 一.Shell p ...

  2. 技能篇:shell教程及脚本编写

    前言 我们常时不会见到shell脚本,但是需要阅读开发linux脚本时,这又是一项必不可少的技能.本文在于提供基础的shell编程语法和简单的实例,帮助同学快速开发,可当做shell手册使用也非常善 ...

  3. linux使用shell函数扩充命令,Linux Shell系列教程之(十五) Shell函数简介 | Linux大学...

    摘要 函数可以将一个复杂功能划分成若干模块,从而使程序结构更加清晰,代码重复利用率更高. 高级语言都支持函数,Shell也不例外.今天就为大家介绍下Shell中函数相关用法. 函数可以将一个复杂功能划 ...

  4. Xamarin.FormsShell基础教程(9)Shell相关类体系

    Xamarin.FormsShell基础教程(9)Shell相关类体系 在Shell中,最为主要的类是Shell类.Shell类实现了大多数应用程序所需的基本UI功能的页面.除此以外,常用的类还有Sh ...

  5. Xamarin.FormsShell基础教程(8)Shell的模版构成

    Xamarin.FormsShell基础教程(8)Shell的模版构成 Shell模版创建的页面包含内容页.标签栏.侧滑菜单.搜索框四部分.下面依次介绍这几个部分. 内容页:内容页就是为用户呈现内容的 ...

  6. Xamarin.FormsShell基础教程(7)Shell项目关于页面的介绍

    Xamarin.FormsShell基础教程(7)Shell项目关于页面的介绍 轻拍标签栏中的About标签,进入关于页面,如图1.8和图1.9所示.它是对应用程序介绍的页面. 该页面源自Views文 ...

  7. Xamarin.FormsShell基础教程(6)Shell项目内容详情页面

    Xamarin.FormsShell基础教程(6)Shell项目内容详情页面 轻拍内容列表页面中的任意一项内容后,进入内容详情页面,如图1.6和图1.7所示.该页面中显示了内容项的标题和具体内容.该页 ...

  8. Xamarin.FormsShell基础教程(5)Shell项目内容新建页面

    Xamarin.FormsShell基础教程(5)Shell项目内容新建页面 轻拍内容列表页面中的Add按钮后,进入内容新建页面,如图1.4和图1.5所示.在该页面中,用户可以设置新建内容的标题和具体 ...

  9. Xamarin.FormsShell基础教程(4)Shell项目内容列表页面运行效果

    Xamarin.FormsShell基础教程(4)Shell项目内容列表页面运行效果 在创建好Shell解决方案后,就可以运行程序了.本小节将讲解运行后的效果. 内容列表页面 运行程序,初始效果如图1 ...

  10. Xamarin.FormsShell基础教程(3)Shell项目构成

    Xamarin.FormsShell基础教程(3)Shell项目构成 在创建的ShellDemo解决方案中,有3个子项目,分别为ShellDemo.ShellDemo.Android和ShellDem ...

最新文章

  1. Winform开发的界面处理优化
  2. 商汤科技总裁张文谈人工智能: 未来10年到20年会有巨大爆发 下一个井喷是AI+教育
  3. 简单的3个SQL视图搞定所有SqlServer数据库字典
  4. shell中数组基础语法
  5. Java数据结构——有序链表
  6. tomcat https 配置
  7. 白话算法(6) 散列表(Hash Table)从理论到实用(中)
  8. JVM(三)——对象的访问定位
  9. 训练神经网络的一些技巧(包括激活和损失函数的选择、调参、过拟合等)
  10. 那些在一家公司呆了 10 年的程序员,最后都怎么了?
  11. 我的地盘我做主—玩转Python函数和变量
  12. 编译原理 自顶向下分析
  13. IE8的模式修改优化Windows7
  14. C语言--《C专家编程》C语言申明的优先级规则
  15. php hprose,基于 hprose/hprose-php开发的Laravel扩展:laravel-hprosed的介绍
  16. 构建微服务技术中台,SpringCloud和Kubernetes该如何选型?
  17. stm32时钟和通信方式及stm32cubemx 配置usart通信
  18. Arcanist用法简介
  19. 渗透测试RECON-NG介绍
  20. PEI-NaYF4:Yb/Er上转换发光纳米材料,树状水溶性聚合物,45nm粒径纳米粒

热门文章

  1. M6315模块连接阿里云物联网MQTT通讯
  2. Python使用HappyBase连接Hbase与基本操作
  3. 石河子大学计算机学院宿舍,对于那些想去211石河子大学的同学给你一点建议
  4. Spring MVC小DEMO
  5. 学习JDK源码(一):String
  6. 项目质量管理--如何保证项目的质量
  7. linux 下备份MySQL数据库 并删除7天前的备份数据
  8. Jenkins 利用HTML Publisher plugin实现HTML文档报告展示
  9. 2017前端大厂踩坑经验
  10. BZOJ 1086: [SCOI2005]王室联邦( )