shell linux教程,Shell入门基础知识

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

814cd96897e463fa1efce59f5a6e41a9.png

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

创建脚本内容如下

f0ffa5f7a24c361ec781636d5771ea6d.png

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

2defb23f456e3a7d06c186691e5f51f0.png

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

feaba26a7549df3d5ed31efaac4d495d.png

单引号双引号的区别

单引号:原样输出

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

没有引号:输出变量

f0ec4c9f33da42a1004068ea2bba60e0.png

传递的参数

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

特殊的调用参数:

$0:返回Shell文件名称

$$:当前脚本的PID

$#:传递的所有参数

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

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

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

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

$* :获取所有的参数

c493bbf496cfb49a015cb13e09e5664f.png

0370031d9ef6aa63333d430669c07c80.png

不同脚本之间访问变量

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

679461523274fed89d499baf3b08d88c.png

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

8f435d046a2af140888ad4ba37818abe.png

取消变量

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

690c94948faf01bb5440acbf8972c3f1.png

数组

数组中可以存放多个值。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. 需要用``引起来

关系运算符

ade2b377b01227b3ba52248ecd9d30f5.png

使用方法:

if [ $a -eq $b ]

then

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

else

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

fi

布尔运算符

931e53cc659480d04e25de3734d646b2.png

使用方法

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

then

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

else

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

fi

逻辑运算符

a16aac87a7dca69c8c61c7936bcd16db.png

字符串运算符

3bd1cdca86f8b6f348484bf71b96a1ab.png

文件测试运算符

e487cfaa6fd6c2587e33bc0a5d55edfb.png

0b1331709591d260c1c78e86d0c51c18.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/498583.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IBM用量子计算机成功模拟分子,登上《自然》封面

来源:澎湃新闻概要:当地时间9月13日,IBM宣布,在自己的超导量子设备上实现了一种新的量子算法,这种算法可以模拟真实分子,能够高效精确地计算出小分子电子的最低能态(energy state)。…

浅析强化学习及使用Policy Network实现自动化控制

来源:极客头条概要:强化学习已经有几十年的历史,但是直到最近几年深度学习技术的突破,强化学习才有了比较大的进展。浅析强化学习一个强化学习问题包含三个主要概念,即环境状态(Environment State&#xf…

“脑科学”已成大国“必争之地” 看各国都亮哪些大招 | 2030年中国脑计划将闯入“终极疆域” 脑科学将成为大国必争之地

来源:战略前沿技术概要:脑科学的知识将奠定即将到来新时代之基础。凭这些知识我们可医治大量疾病,建造模仿脑功能的新机器,而且更深入地理解我们自己的本质以及我们如何认识世界。一年前,“阿尔法围棋”战胜李世石引来…

2017年诺贝尔生理学或医学奖揭晓

来源:科学网、中国新闻网编者按:北京时间10月2日下午5点30分,2017年诺贝尔生理学或医学奖揭晓,3位美国科学家Jeffrey C. Hall, Michael Rosbash和Michael W. Young获奖。获奖理由是“发现了调控昼夜节律的分子机制”。Jeffrey C. …

独家 | 揭秘出行巨头Uber的机器学习平台与团队

来源:本文经AI新媒体量子位(公众号ID:QbitAI)授权转载,转载请联系出处。概要:一个好的机器学习平台,不光是个铁锹,它必须是个现代化大型自动化挖掘机。只有让大数据以更廉价的方式得…

业界 | 德勤预测:机器学习走向移动端成大势所趋,或将再掀行业新浪潮

来源:AI科技评论概要:早在20世纪70、80年代,大部分企业计算都由办公大楼地下室里的大型主机和微型计算机完成,工作人员则在操作由没有机载处理能力的阴极射线管监视器(被称为“绿屏”)和键盘组成的“简易终…

2017年诺奖:百年现代物理学,今天做了个了断!

编者按:2017年诺贝尔物理学奖被授予美国三位科学家Rainer Weiss(雷纳韦斯)、Kip Thorne(基普索恩)、Barry Barish(巴里巴里什),以表彰他们在LIGO检测器和引力波观测的决定性贡献。中…

用深度学习模型,解构并重构人类思维

来源:人机与认知实验室概要:人类的知识,往往由事实 fact 和规则 rule 组成,而且人类习惯于用简练的词汇,来表达事实和规则。所以,维特根斯坦认为,人类思维受制于语言结构,语言的界限…

Ios 12 linux,苹果发布iOS 12.4.1,以修补越狱漏洞

Apple今天发布了针对iPhone和iPad设备的最新iOS 12.4移动操作系统,Apple TV设备的tvOS 12.4以及Apple Watch设备的watchOS 5.3的第一个小Bug和安全更新。iOS 12.4.1是iOS 12.4发布多月后的一项重大更新,引入了新的iPhone迁移功能,允许用户将数…

谷歌AI智商达苹果Siri两倍 但不及6岁儿童

来源:IT之家概要:3名中国研究员近期发表的论文指出,谷歌人工智能技术相对于苹果Siri“智商”明显更高。3名中国研究员近期发表的论文指出,谷歌人工智能技术相对于苹果Siri“智商”明显更高。这篇论文比较了多个人工智能系统。论文…

Deepmind 预测地图论文背后:神经科学或将助力AI迎来新突破

来源:AI科技评论概要:这篇论文中,Deepmind通过对主管人类长期记忆行为的“海马体”(hippocampus)神经元活动的研究,进一步提出了可以转化为神经网络架构的“预测图”理论。对人类神经网络的理解越来越在左右…

c语言更改编译时字体,c习题编译时出现空的字符常量,怎么修改?

题目要求&#xff1a;统计各个数字&#xff0c;空白符以及所有其他字符出现的次数。[CODE]#include main(){int c, i, nwhite, nother;int ndigit[10];nwhite nother 0;for (i 0; i < 10; i)ndigit[i] 0;while ((c getchar()) ! EOF)if (c > ’0′ && c <…

你所未知的人工智能应用领域

来源&#xff1a;199IT互联网数据中心 概要&#xff1a;一组专家为我们详细描述了随着我们所使用的机器变得越来越智能&#xff0c;我们周围的世界正在如何发生变化的图景。 对有些人来说&#xff0c;人工智能和机器人技术的普及对我们的隐私、工作甚至人身安全构成了威胁&…

原来你是这样子的OpenAI!来看看它背后那些有趣的人和事

来源&#xff1a;AI科技大本营 概要&#xff1a;它的目标非常明确&#xff0c;就是要确保人类安全&#xff0c;确保人类的权益不受未来机器人的影响&#xff0c;确保人类可以长久地与智能机器人共存。 提到OpenAI&#xff0c;业内可谓无人不知&#xff0c;无人不晓。 这可是人气…

Gartner十大IT预测:七大数字巨头,有五家将心甘情愿“自我颠覆”

来源&#xff1a;凤凰科技 概要&#xff1a;Gartner的预测&#xff0c;以及支持这些预测的假设&#xff0c;表明企业首席信息官必须首先是业务战略师&#xff0c;然后才是技术专家。 Gartner的预测&#xff0c;以及支持这些预测的假设&#xff0c;表明企业首席信息官必须首先是…

谷歌花4亿英镑下注AI开始有回报 DeepMind创收了

来源&#xff1a;腾讯科技 概要&#xff1a;DeepMind虽然还保持独立运营&#xff0c;但其对于谷歌产品的贡献恰逢其时。该公司2016年对于Alphabet其他公司的产品和服务所作出的贡献价值4000万英镑&#xff0c;这也是该公司首次创收。 外媒指出&#xff0c;Alphabet子公司谷歌周…

2016全球教育机器人发展白皮书

来源&#xff1a;199IT互联网数据中心 概要&#xff1a;白皮书梳理了全球教育机器人发展现状与趋势。从教育机器人的全球重要研究机构、市场产品评测、需求调研、产业链分析及未来市场发展预测&#xff0c;进行阐述。 白皮书梳理了全球教育机器人发展现状与趋势。从教育机器人的…

谷歌硬件战略缺陷:无法围绕谷歌助手打造硬件体系

来源&#xff1a;元器件交易网 概要&#xff1a;谷歌希望大规模销售基于谷歌助手的硬件&#xff0c;战略调整或许是其中重要的一步。 谷歌是否犯了重大错误&#xff1f; 谷歌正在以“人工智能优先”的战略取代此前“移动优先”的战略&#xff0c;并公开地推进这一战略。这是个大…

android 代码 升级rom,ROM之家简析:Android手机系统怎么升级

Android系统现在基本上每年都会有一次大的升级&#xff0c;以及很多次小的升级&#xff0c;对于手机用户来说&#xff0c;当然希望自己能用上最新版本的系统。除了手机厂商也会在适当时间发布官方版本系统升级&#xff0c;也可以自己在网上下载安装第三方系统升级。目前安卓手机…

在这场人工智能“战争”中,这些国家都在做些什么?

来源&#xff1a;Future智能 概要&#xff1a; 人工智能是引领未来的战略性技术&#xff0c;世界主要发达国家都已经把发展人工智能都作为提升其国家竞争力、维护国家安全的重要战略&#xff0c;进行针对性布局&#xff0c;力图在新一轮国际科技竞争中掌握主导权。 人工智能是引…