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)。…

linux on android分区,android 分区大小 地址查看

不同的手机分区不相,在adb shell下可以使用linux命令进行很多分区操作查看块设备列表"ls -l /dev/block"查看各分区名称"ls -l /dev/block/platform/【sdhci-tegra.3】/by-name" 其中【sdhci-tegra.3】视具体设备而定查看各分区容量"c…

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

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

AM335 嵌入式 linux,am335x开发板建立嵌入式 Linux NFS 开发环境

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼am335x开发板嵌入式开发板系统 NFS客户端的配置首先运行在嵌入式开发板系统的 Linux 内核支持 NFS 客户端, 运行 #make menuconfig 命令后, 选择菜单中 Fils Sys-tem- - - >选项, 按车回键后选择下级菜单中的 Network File Sys-…

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

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

Linux怎么删除虚拟硬盘,2017.05.10 qemu-nbd 全自动挂载/卸载 虚拟硬盘中所有可用分区 的 脚本...

#!/bin/sh# 通过 qemu-nbd 实现 vhd 的挂载 ,事先需要安装 qemu-utils , name:vhd5.sh# 需要事先 sudo apt-get install qemu-utils# 在vhd所在目录新建名为 "v_disk.vhd文件名" 的目录# 把 vhd 文件 虚拟到 /dev/nbdX ,并把虚拟硬盘的各分区 /dev/nbdXpY 挂载到目录…

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

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

linux命令取数字前两位,linux中head命令使用详解(显示开头数量的文字块)

head 与 tail 就像它的名字一样的浅显易懂,它是用来显示开头或结尾某个数量的文字区块,head 用来显示档案的开头至标准输出中,而 tail 想当然尔就是看档案的结尾。1.命令格式:head [参数]... [文件]...2.命…

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

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

linux建立动态库链接,Linux动态链接库.so文件的创建与使用

资料出处:http://linux.chinaitlab.com/administer/803560.html编 写维护文件的目的,在于方便程序员维护程序,尤其是维护比较大的工程项目。一个素质良好的程序员应该学会熟练地编写维护文件makefile。定义了文件 间的依赖关系后,…

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

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

linux常用架构,Linux常用到的一些命令-Go语言中文社区

1.poweroff 关闭系统(1)2.halt 关闭系统(2)3.reboot 重启系统4.pwd 查看当前所在目录的绝对路径5.mkdir 文件名 创建一个目录文件6.rm 文件名 删除文件(如果删除目录文件需要加上-r,如果强制删除需要加上-f)7.cat 文件名 查看文件内容(适合查看短小内容)8.date 查看…

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

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

linux libasan.so,Address Sanitizer 用法

Address Sanitizer(ASan)是一个快速的内存错误检测工具。这里说明它的用法。参考资料1. 简介Address Sanitizer(ASan)是一个快速的内存错误检测工具。它非常快,只拖慢程序两倍左右(比起Valgrind快多了)。它包括一个编译器instrumentation模块和一个提供malloc()/fre…

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

来源:人机与认知实验室概要:人类的知识,往往由事实 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“智商”明显更高。这篇论文比较了多个人工智能系统。论文…

linux传输文件到linux速度慢,linux中往nand(jffs2)中拷贝文件时速度慢的问题

最近在调试nand和jffs2时,发现将一个文件从SD卡拷贝到jffs2的NAND分区时,速度非常慢,和从NAND中拷出(例如拷贝到SD卡)相比,慢了近5倍。一开始以为是驱动写NAND和读NAND的差异,后来用mtd-utile的nand write测试了一下&a…

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 <…