当前位置:首页 > 技术知识 > 正文内容

如何学好大数据开发?---shell基本语法

maynowei7个月前 (10-19)技术知识119

昨天我们初步了解到了shell的一些基本知识,比如shell的分类,常用的shell类型。今天就带来大数据开发之shell基本语法,掌握好基础才是最重要的,那接下来就开始学习shell的基本语法。

一、Shell基本语法

在我们常见的编程语言一般分为两类:一个是编译型语言,如 C、C++、Pascal、Go等,必须在程序运行之前将所有代码都翻译成二进制形式,也就是生成可执行文件,用户拿到的是最终生成的可执行文件,看不到源码。这个过程叫做编译(Compile),这样的编程语言叫做编译型语言,完成编译过程的软件叫做编译器(Compiler)。

另一个解释型语言,如 Shell、JavaScript、Python、PHP等,需要一边执行一边翻译,不会生成任何可执行文件,用户必须拿到源码才能运行程序。程序运行后会即时翻译,翻译完一部分执行一部分,不用等到所有代码都翻译完。这个过程叫做解释,这样的编程语言叫做解释型语言或者脚本语言(Script),完成解释过程的软件叫做解释器。

二、变量

1.在Shell中,我们在使用变量之前并不需要进行声明.反之我们可以在需要的时候进行简单的使用就可以了。常规来说,在默认的情况下,所有的变量都是作为字符串进行存储的,尽管有时我们会用数字为其赋值。Shell以及其他的一些实用的转换程序会将数字字符串转换成相应的值为进行操作。在Linux系统中是要区分大小的,因此在Shell看来变量foo与Foo是不同的.

2.在shell中,由于shell变量和一些编程语言不同,一般shell的变量赋值的时候不用带“$”,而使用或者输出的时候要带“$”。所以当我们要访问变量的值的时候,就需要在变量前加个$,而在赋值的时候就只需使用变量的名字即可,Shell会在需要的时候进行动态创建。另外加减乘除的时候要加两层小括号,括号外面要有一个“$”,括号里面的变量可以不用“$”。需要注意的是,变量赋值,变量使用的时候不能有空格,否则会被解析成命令,报错无此命令。

那么如何检测变量内容呢?这里有一个较为简单的办法:“就是在终端进行输出,这时要在变量前加上一个$。”

3.shell 中变量的赋值方式如下:

变量名=值 # (注意!,赋值语句两边不能有空格,即 “=” 号两边不能有空格)。等号右边若有空格的话,需要加上引号(单引号或双引号都是可以的)。shell 中可以在变量名前加上 $ 字符来取变量的值。如下图这个例子

输出结果如下:

(注意:这里使用的是单引号和双引号的用法)在单引号中,所有特殊字符都没有特殊含义;而在双引号中,"#34;、" ` "(反引号)、"\" 有特殊含义,其余的没有特殊含义。至于反引号 " ` ",反引号中可以用来引用系统命令,其中的内容将会被优先执行,其功能与 $(...) 一样,详情后面再做叙述。

三、数组使用

与其他的编程语言一样,Shell也支持数组。数组(Array,这个概念早期文章有提到过,感兴趣的可以点开我的主页找找)是若干数据的集合,其中的每一份数据都称为元素(Element)。

Shell 并且没有限制数组的大小,理论上可以存放无限量的数据。和 C++、Java、C# 等类似,Shell 数组元素的下标也是从 0 开始计数,获取数组中的元素要使用下标[ ],下标可以是一个整数,也可以是一个结果为整数的表达式。当然,下标必须大于等于 0。

不过有一点是比较可惜的,我们常用的Bash Shell只支持一维数组,不支持多维数组,多少造成了一些不方便,初始化时不需要定义数组大小(与 PHP 类似)。

Shell 数组用括号来表示,元素用"空格"符号分割开,语法格式如下:

array_name=(value1 value2 ... valuen)注意,赋值号=两边不能有空格(前面也说过),必须紧挨着数组名和数组元素。在 Shell 中,用括号( )来表示数组,数组元素之间用空格来分隔。

举个例子:nums=(29 100 13 8 91 44)

以上就是本期关于大数据开发之shell基本语法的所有内容了,明天还会继续更新大数据开发之shell(3),shell 的相关内容较多,所以就分为了3篇来写。

希望大家点个关注,及时收取最新文章推送,想了解更多敬请咨询加米谷大数据。

有问题的欢迎在评论区留言,如有侵权请告知。

相关文章

机器人需求驱动导航新SOTA,成功率提升15%!浙大&vivo联手打造

CogDDN团队 投稿量子位|公众号QbitAI让机器人像人一样边看边理解,来自浙江大学和vivo人工智能实验室的研究团队带来了新进展。正如视频所展示的,机器人在复杂的室内环境中不仅能自主探索,还具备...

有了这份900多页的Android面试指南,你离大厂Offer还远吗?

前言对于大部分程序员来说,一线互联网是的工作经历是毕生的追求,实际上大厂对于学历的要求远远没有我们想象的那么高,近几年来,互联网公司更注重技术,所以提升自身技术水平才是斩获offer的制胜关键。一线互...

打通 JAVA 与内核系列之 一 ReentrantLock 锁的实现原理

写JAVA代码的同学都知道,JAVA里的锁有两大类,一类是synchronized锁,一类是concurrent包里的锁(JUC锁)。其中synchronized锁是JAVA语言层面提供的能力,在此不...

Oracle又双叕开始严查JDK,连夜提桶跑路

哈佛商业报道了最近几起北美的JDK许可问题公司用了来源不明的JDK,怕蹲里面,连夜提桶跑路The company uses JDK from unknown sources, and is afrai...

Amundi sees "US Exceptionalism" eroding, while turns bullish on China's AI

南方财经全媒体记者 袁思杰 孙迟悦 香港报道"The support for US exceptionalism has weakened since the beginning of this ye...

入门Javascript需要看的书(js入门看什么书)

JavaScript权威指南(第6版)对于 JavaScript 新手入门来说,其实看什么书不重要,重要的是要能引起你兴趣使得你愿意动动手做做项目。在动手做过几个项目,对了 JavaScript 有了...