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

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

maynowei8个月前 (10-19)技术知识140

昨天我们初步了解到了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篇来写。

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

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

相关文章

大势所趋:Swift受欢迎度即将赶超Objective C

Swift是Apple在WWDC2014所发布的一门编程语言,用来撰写OS X和iOS应用程序。不到两年时间,在iOS开发者中Swift语言便凭借着简洁的语法和优秀的特性打动了开发者,之前用于iOS和...

Android之自定义ListView(一)(android 自定义view绘制流程)

PS:自定义View是Android中高手进阶的路线.因此我也打算一步一步的学习.看了鸿洋和郭霖这两位大牛的博客,决定一步一步的学习,循序渐进.学习内容:1.自定义View实现ListView的Ite...

centos系统安装oracle简易客户端instantclient

一、目录1:centos 环境准备2:instant client 下载3:instant client 安装4:instant client 配置5:测试连接二、安装步骤1:zip,unzip命令安...

Oracle标准化部署手册(oracle19c客户端)

很久之前写过一篇11g的windows安装手册, 这次是19c的windows安装手册,面向没有数据库安装部署经验的开发人员或想学习数据库的新手。希望能给想从事dba的入门人员小小的帮助。 毕竟每个高...

一个快要被忘记的数据库开发岗位,但应该被尊重

数据库测试,似乎是被人遗忘的数据库职业,但依然是不错的选择。底下是我在某站找的招聘启事,就连蚂蚁金服都在积极寻找数据库测试人:要说我经历的项目,大大小小也有几十个,从 C/S, B/S, 再到 B/C...

你可能疏忽的plsql和navicat连接Oracle注意点

在日常开发中,我们总是少不了要连接数据库,你是否遇到过填写的账号、密码、连接地址都对,但就是连接不上Oracle的情况?这里说一下其中一种连接不上Oracle的原因,这种情况简单,但很可能被疏忽。记下...