执行如下shell脚本命令在centos7上是正常的,在centos8上为啥得到结果是一样的啊?

作为一个专业小白,有时对于领导下达的任务,我们有时会感觉不太懂。。而上周,本葡萄也遇到了这种问题:实现在linux中安装docker后部署数据可视化工具。

虽然相关内容本葡萄并不太懂,但作为一名敬业的打工人,摆烂不可以,躺平不可以,迎难而上,方显打工人本色。

接下让我带大家一起,从原理出发,了解如何实现这个项目。

首先,我们将各个概念逐一扫清。

不搜不知道,一搜吓一跳。CentOS可谓是开发人员最喜爱的 Linux系统之一了。

它是免费且开源的、可以重新分发的开源操作系统,稳定的特性,可以对内容进行很好的管理,并复现成为它不可被替代的优点。

自2004年3月以来,CentOS Linux一直是社区驱动的开源项目,旨在与RHEL在功能上兼容。很多情况我们会选择使用CentOS 构建服务器,用以保证服务器的稳定高效。

简单来说,它是一款可靠的服务器操作系统。

跟计算机行业沾点边的,不知道Docker是做什么的,都不好意思回家过年,怕被亲戚追问:“你会Docker吗?给我也做一个!”

Docker 是一个开源的应用容器引擎,让开发者可以将他们的应用以及依赖包打包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器完全使用沙箱机制,相互之间不会有任何接口。

但是这样的解释,亲戚必然是不懂的。套用知乎的通俗解释:Docker的思想来自于集装箱,集装箱究竟解决了什么问题?

可以想象在一艘大船上,我们可以把货物规整地摆放起来,并且各种各样的货物被集装箱标准化了,集装箱和集装箱之间不会互相影响。那么我就不需要专门运送水果的船和专门运送化学品的船了。只要这些货物在集装箱里封装得好好的,那我就可以用一艘大船把他们都运走。

理论都了解的差不多了,那我该开始动手了。

首先明确我要部署的工具是BI商业智能工具,是支持在CentOS 部署,且支持Docker镜像部署的。

话不多说直接上操作流程,建议大家直接收藏:

不要问为什么不是其他版本,实实在在踩的坑,因为这个版本比较好用。

进入系统,进入下面的命令行,对于小白来说,第一次进来找不见命令行很正常,因为开始的时候,我也找不见。因为这里是需要用管理员权限进行安装的,所以进入命令行后,要输入 su 后回车。然后提示输入密码,进入root账号。

进入系统后,界面上会弹出一个更新插件库的一个框,点击更新。老手自行命令,这里面对新手,否则会yum无法使用。这个也可以通过命令安装,但是这个步骤比较麻烦。

如果出来docker 版本号了,那么说明这一步就安装好了。

安装wyn,依次执行下面的命令。

恭喜你,现在我们已经将wyn安装好了。可以通过 http://localhost:51980/ 来启动了。但是问题来了,启动不起来。

因为我们还有第五步需要再安装一下,所以暂时不要激动:

好了,这一步已经99%已经完成了。是不是觉得特别简单呢?但是这个问题在我第一次安装的时候,整了七八个小时。

1.1 首先,使用Wyn官方提供的docker镜像来创建一个自己的docker容器。

此时,可以根据自己的需要来对Wyn系统进行配置,比如替换登录页面的背景图片和LOGO,替换系统左上角显示的LOGO,以及替换浏览器tag页上面显示的LOGO。还可以根据自己的需要创建一些示例文档。

导出后,是一个压缩包。

1.1 准备一台Linux机器,把文件夹custom-wyn拷贝到这台机器上面去。

1.3 如果需要在自定义的docker镜像中内置字体,请把准备好的字体文件拷贝到目录custom-wyn/custom_fonts下。

1. 拉取步骤2中创建好的docker镜像,并使用该镜像创建一个docker容器。

2. 访问该docker容器中运行的Wyn应用并进行验证。

到这里就实现了我们最终目标,在CentOS中实现Docker部署BI工具的目的。

虽然研究的过程是很痛苦的,但是掌握了这个技能,本葡萄还是觉得心满意足的。

希望能给各位开发大佬带来一些灵感和启发!再见!

如果你想了解更多BI可视化行业解决方案,欢迎访问“葡萄城官网”。

}

(3)脚本的常用执行方式

第一种:采用bash或sh+脚本的相对路径或绝对路径(不用赋予脚本+x权限)

bash+脚本的相对路径

bash+脚本的绝对路径

第二种:采用输入脚本的绝对路径或相对路径执行脚本(必须具有可执行权限+x)

注意:第一种执行方法,本质是bash解析器帮你执行脚本,所以脚本本身不需要执行权限。第二种执行方法,本质是脚本需要自己执行,所以需要执行权限。

3.第二个Shell脚本:多命令处理

(1)查看系统变量的值

(1)定义变量:变量=值

(1)变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建议大写。

(2)等号两侧不能有空格

(3)在bash中,变量默认类型都是字符串类型,无法直接进行数值运算。

(4)变量的值如果有空格,需要使用双引号或单引号括起来。

(2)给变量A重新赋值

(5)在bash中,变量默认类型都是字符串类型,无法直接进行数值运算

(6)变量的值如果有空格,需要使用双引号或单引号括起来

(7)可把变量提升为全局环境变量,可供其他Shell程序使用

发现并没有打印输出变量B的值。

$n (功能描述:n为数字,$0代表该脚本名称,$1-$9代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含,如${10})

(1)输出该脚本文件名称、输入参数1和输入参数2 的值

$# (功能描述:获取所有输入参数个数,常用于循环)。

(1)获取输入参数的个数

$* (功能描述:这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体)

$@ (功能描述:这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待)

(1)打印输入的所有参数

4.6 特殊变量:$?

$? (功能描述:最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确了。)

注意:expr运算符间要有空格

(b)采用$[运算式]方式

(1)两个整数之间比较

(2)按照文件权限进行判断

(3)按照文件类型进行判断

-f 文件存在并且是一个常规的文件(file)

(4)多条件判断(&& 表示前一条命令执行成功时,才执行后一条命令,|| 表示上一条命令执行失败后,才执行下一条命令)

(1)[ 条件判断式 ],中括号和条件判断式之间必须有空格

如果变量的值等于值1,则执行程序1

如果变量的值等于值2,则执行程序2

如果变量的值都不是以上的值,则执行此程序

1) case行尾必须为单词“in”,每一个模式匹配必须以右括号“)”结束。

2) 双分号“;;”表示命令序列结束,相当于java中的break。

3) 最后的“*)”表示默认模式,相当于java中的default。

(1)输入一个数字,如果是1,则输出banzhang,如果是2,则输出cls,如果是其它,输出renyao。

for (( 初始值;循环控制条件;变量变化 ))

(1)打印所有输入参数

(b)当它们被双引号“”包含时,“$*”会将所有的参数作为一个整体,以“$1 $2 …$n”的形式输出所有参数;“$@”会将各个参数分开,以“$1” “$2”…”$n”的形式输出所有参数。

-p:指定读取值时的提示符;

-t:指定读取值时等待的时间(秒)。

变量:指定读取值的变量名

(1)提示7秒内,读取控制台输入的名称

dirname 文件绝对路径 (功能描述:从给定的包含绝对路径的文件名中去除文件名(非目录的部分),然后返回剩下的路径(目录的部分))

(1)必须在调用函数地方之前,先声明函数,shell脚本是逐行运行。不会像其它语言一样先编译。

(2)函数返回值,只能通过$?系统变量获得,可以显示加:return返回,如果不加,将以最后一条命令运行结果,作为返回值。return后跟数值n(0-255)

(1)计算两个输入参数的和

cut的工作就是“剪”,具体的说就是在文件中负责剪切数据用的。cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段输出。

说明:默认分隔符是制表符

分隔符,按照指定分隔符分割列

(4)选取系统PATH变量值,第2个“:”开始后的所有路径:

sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。

直接在指令列模式上进行sed的动作编辑。

新增,a的后面可以接字串,在下一行出现

(1)将“mei nv”这个单词插入到sed.txt第二行下,打印。

注意:‘g’表示global,全部替换

(4)将sed.txt文件中的第二行删除并将wo替换为ni

一个强大的文本分析工具,把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行分析处理。

pattern:表示AWK在数据中查找的内容,就是匹配模式

action:在找到匹配内容时所执行的一系列命令

(1)搜索passwd文件以root关键字开头的所有行,并输出该行的第7列。

(2)搜索passwd文件以root关键字开头的所有行,并输出该行的第1列和第7列,中间以“,”号分割。

注意:只有匹配了pattern的行才会执行action

注意:BEGIN 在所有数据读取行之前执行;END 在所有数据执行之后执行。

(4)将passwd文件中的用户id增加数值1并输出

浏览记录的域的个数(切割后,列的个数)

(1)统计passwd文件名,每行的行号,每行的列数

sort命令是在Linux里非常有用,它将文件进行排序,并将排序结果标准输出。

设置排序时所用的分隔字符

参数:指定待排序的文件列表

(1)按照“:”分割后的第三列倒序排序。

}

我要回帖

更多关于 linux执行脚本的命令 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信