Shell 简介

Shell作为命令语言,它交互式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。

常常作为批处理命令来使用,用来提高生产效率!

入门

下面是Shell的一段简单入门程序,我们在Linux上面使用vi test.sh然后将下面的代码打进去,运行sh test.sh 即可

#!/bin/bash

echo "Hello World !"

上面这段程序是输出HelloWorld,其中#!/bin/bash 指定编译器,必须在脚本的第一行,echo输出信息,这里为输出Hello World

如何运行这段程序呢, 第一步首先进入到该脚本所在的目录,比如cd /root/shelltest ,运行命令sh test.sh 这样就可以进行输入了。

程序中的变量

定义全局变量

全局变量一直存在,不会因为切换shell终端或者退出登录而消失,全局变量需要在 /root/.bush_profile 、/etc/bashrc、/etc/profile、/etc/profile.d文件中设置,设置的格式为export name=value

在/etc/profile中定义完成后,需要重新加载配置文件 source /etc/profile

其中在/etc/profile.d设置shell脚本可以在启动shelle客户端的时候就执行这个脚本,这个文件夹中存储的都为脚本。

创建脚本内容如下

则新打开客户端的时候则会执行这个脚本,输出对应的内容。

定义局部变量, 局部变量在退出Shell客户端时会失效

单引号双引号的区别

单引号:原样输出

双引号:如果里面有变量,会输出变量

没有引号:输出变量

传递的参数

可以在调用脚本的时候给脚本传递参数,脚本内使用$1 $2 ...... 接受传递的参数,当参数超过9的时候,需要用花括号括起来 ${10}

特殊的调用参数:

$0:返回Shell文件名称

$$:当前脚本的PID

$#:传递的所有参数

$@:程序中的所有参数,这是将参数传递给其他程序的最佳方式。

$! :执行的上一个命令的PID

$?:上一次指令的返回值

$_:此命令前面的最后一个参数

$* :获取所有的参数

不同脚本之间访问变量

使用sh命令启动的脚本,则在脚本结束其内部的属性都会消失,其他的脚本不能访问其内部的属性。

使用source 命令启动脚本,则在脚本结束后其属性不会失效,同时其他的脚本也能访问到。

取消变量

使用unset可以取消变量,这个变量包括环境变量和局部变量

数组

数组中可以存放多个值。Bash Shell 只支持一维数组(不支持多维数组),初始化时不需要定义数组大小(与 PHP 类似),数组下标从0开始。

定义数组

array=(value1 value2 value3)

array_name[0]=value0

读取数组

${array_name[index]}

获取数组中全部的元素

${my_array[@]}

获取数组的长度

${#my_array[*]}

流程控制

if

如果else语句中没有执行语句,不可以写

if condition

then

command1

command2

...

commandN

fi

------------------

if condition

then

command1

command2

...

commandN

else

command

fi

------------

if condition1

then

command1

elif condition2

then

command2

else

commandN

fi

for

for var in item1 item2 ... itemN

do

command1

command2

...

commandN

done

while

while condition

do

command

done

until

类似do-while循环,在最后判断条件,最少执行一次

until condition

do

command

done

case

case 值 in

模式1)

command1

command2

...

commandN

;;

模式2)

command1

command2

...

commandN

;;

esac

函数

demoFun(){ // 定义

echo "这是我的第一个 shell 函数!"

}

echo "-----函数开始执行-----"

demoFun // 调用,如果需要传递参数直接在后面跟就好 demoFun 1 2 3

echo "-----函数执行完毕-----"

运算符

expr 是一款表达式计算工具,使用它能完成表达式的求值操作。

expr 2 + 2 使用方法 , 需要注意的为1.表达式和运算符之间要有空格 2. 需要用``引起来

关系运算符

使用方法:

if [ $a -eq $b ]

then

echo "$a -eq $b : a 等于 b"

else

echo "$a -eq $b: a 不等于 b"

fi

布尔运算符

使用方法

if [ $a -lt 100 -a $b -gt 15 ]

then

echo "$a 小于 100 且 $b 大于 15 : 返回 true"

else

echo "$a 小于 100 且 $b 大于 15 : 返回 false"

fi

逻辑运算符

字符串运算符

文件测试运算符

shell linux教程,Shell入门基础知识相关推荐

  1. php插入js教程,JavaScript_JavaScript入门教程(2) JS基础知识,在什么地方插入 JavaScript  Ja - phpStudy...

    JavaScript入门教程(2) JS基础知识 在什么地方插入 JavaScript JavaScript 可以出现在 HTML 的任意地方.使用标记,你可以在 HTML 文档的任意地方插入 Jav ...

  2. Linux入门基础知识

    注:内容系兄弟连Linux教程(百度传课:史上最牛的Linux视频教程)的学习笔记. Linux入门基础知识 1. Unix和Linux发展历史 二者就像父子关系,当然Unix是老爹.1965年,MI ...

  3. css基础知识入门教程免费,DIVCSS入门基础知识教程.doc

    DIVCSS入门基础知识教程 HYPERLINK "/rumen/r319.html" DIV+CSS盒子模型 CSS盒子模型-什么是 HYPERLINK "/" ...

  4. 好程序员web前端教程分享web前端入门基础知识

    好程序员web前端教程分享web前端入门基础知识,作为合格的Web前端工程师必须得掌握HTML.CSS和JavaScript.只懂其中一两个还不行,必须对这三门语言都要熟悉.下面我们一起来看一看吧! ...

  5. ***入门基础知识(超全)

    ***入门基础知识(超全) [sell=2]  DOS 常用命令: dir 列文件名 deltree 删除目录树 cls 清屏 cd 改变当前目录 copy 拷贝文件 diskcopy 复制磁盘 de ...

  6. Linux之(6)Kconfig基础知识

    Linux之(6)Kconfig基础知识 Author:onceday date:2022年8月25日 本文档收集整理于互联网,可参考以下文档: Kconfig Language linux kern ...

  7. 学单片机有前景吗?单片机入门基础知识

    任何一个行业,都难免会看到一群喷子,喷行业辣鸡,喷职业苦逼. 最近看到很多喷单片机这个行业的,说这个行业工资低,学的东西又多,没前途. 还不如去学习纯软件,收入上限高. 一.无际对这个行业的看法(当小 ...

  8. Linux教程从入门到精通

    为什么80%的码农都做不了架构师?>>>    Linux教程从入门到精通 Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linu ...

  9. Spark —— 闪电般快速的统一分析引擎 —— 入门基础知识

    Spark 入门基础知识 Spark 的特点 速度快 使用方便 通用 兼容 Spark 基础 下载 独立部署模式(Standalone) 弹性分布式数据集 Scala shell 1. 数组中的最值: ...

最新文章

  1. ni visa pci_CHINACOAT 2019“推荐品牌”赫普菲乐|PCI可名文化出品
  2. python后端开发框架加密_Flask框架实现的前端RSA加密与后端Python解密功能详解
  3. ANSI编码和标准代码页(code page)
  4. jsoup 获取html中body内容_python爬虫之下载盗墓笔记(bs4解析HTML)
  5. Java:ThreadPoolExecutor解析续--Executors
  6. 北大计算机博进高校,他是北大第一位博士,留校任教却连做三件“傻事”,博导都没评上...
  7. matlab引擎 多线程,使用Matlab进行多线程处理
  8. 再谈研发那些事——两项核心工作的区别与联系
  9. python 生成可执行文件.exe
  10. 笔记本电脑自带键盘禁用与恢复
  11. openssl密码套件详解
  12. 百度2023校招 内推码IVV4AS
  13. centos7.6安装lnmp环境
  14. 智能家居系统设计(裸机stm32/μCOS-III)
  15. [个人tricks].chm格式电子书无法正常显示的两种解决办法(亲测有用)
  16. tomcat去掉项目名称直接访问项目
  17. Unity3D脚本中文系列教程(八)
  18. 某网站提供的免费香港虚拟主机测试
  19. 成人用品的UML建模
  20. 三元损失“In Defense of the Triplet Loss for Person Re-Identification”

热门文章

  1. 爬取词库,使用jieba分词库,自定义dict.txt文件+将搜狗词库.scel文件为.txt文件
  2. Webpack构建性能优化指南
  3. 【Java】列表、集合、哈希表和可变参数
  4. 2022年中国AI芯片行业深度研究
  5. 使用less实现自适应宽度
  6. java数据类型转换和数组总结
  7. Docker日志收集最佳实践
  8. SQL Server XML转Table
  9. javascript高级程序设计-Array迭代及归并
  10. Android 3D emulation 架构理解