首页 文章 精选 留言 我的

精选列表

搜索[linux],共10000篇文章
优秀的个人博客,低调大师

Linux之shell编程条件判断-if,while,for,case

原文和作者一起讨论:http://www.cnblogs.com/intsmaze/p/6675350.html 微信:intsmaze if 语法格式 if condition then statements [elif condition then statements] [else statements ] fi 示例 vi if.sh #!/bin/bash if [ $1 = root ] then echo "hello $2 , welcome !" elif [ $1 = intsmaze ] then echo "hello ${2}, welcome !" else echo "SB${2}, get out here !" fi sh if.sh intsmaze nihao 通过执行脚本时,在脚本命令的后面传入参数。 判断条件 1:条件判断基本语法 [ condition ] (注意condition前后要有空格) #非空返回true,可使用$?验证(0为true,1为false) #空返回false,里面条件为空格也是叫空。 [hadoop@centos-Reall-131 shtest]$ if [ 1 ]; then echo ok ;else echo bad; fi; ok [hadoop@centos-Reall-131 shtest]$ if [ 0 ]; then echo ok ;else echo bad; fi; ok [hadoop@centos-Reall-131 shtest]$ if [ a ]; then echo ok ;else echo bad; fi; ok [hadoop@centos-Reall-131 shtest]$ if [ ]; then echo ok ;else echo bad; fi; bad [hadoop@centos-Reall-131 shtest]$ if [ ]; then echo ok ;else echo bad; fi; bad 注意[ ]内部的=周边的空格,有区别: [hadoop@centos-Reall-131 shtest]$ if [ a=b ]; then echo ok ;else echo bad; fi; ok [hadoop@centos-Reall-131 shtest]$ if [ a = b ]; then echo ok ;else echo bad; fi; bad #a=b它识别为一个整体的字符串,所以条件判断为true 短路(理解为三元运算符) [ condition ] && echo OK || echo notok 条件满足,执行&&后面的语句;条件不满足,执行|| 后面的语句 2:条件判断组合 注:[] 与[[ ]] 的区别:[[ ]] 中逻辑组合可以使用 &&(与) ,||(或) ,而[] 里面逻辑组合可以用 -a(与) ,-o(或)。 [hadoop@centos-Reall-131 shtest]$ if [ a = b && b = c ]; then echo ok;else echo bad;fi -bash: [: missing `]' bad [hadoop@centos-Reall-131 shtest]$ if [ a = b -a b = b ]; then echo ok;else echo bad;fi bad [hadoop@centos-Reall-131 shtest]$ if [ a = b -o b = b ]; then echo ok;else echo bad;fi ok [hadoop@centos-Reall-131 shtest]$ if [[ a = b && b = b ]]; then echo ok;else echo bad;fi bad [hadoop@centos-Reall-131 shtest]$ if [[ a = b || b = b ]]; then echo ok;else echo bad;fi ok 3:常用判断运算符 字符串比较:= ,!= ,-z 字符串长度是为0返回true,-n 字符串长度是不为0返回true,这里不包括空格的情况。 [hadoop@centos-Reall-131 shtest]$ if [ 'aa' = 'bb' ]; then echo ok; else echo bad;fi #引号可有可无,当然在进行比较时最好使用引号更好表示。 bad [hadoop@centos-Reall-131 shtest]$ if [ -n "aa" ]; then echo ok; else echo bad;fi ok [hadoop@centos-Reall-131 shtest]$ if [ -z "" ]; then echo ok; else echo bad;fi ok 整数比较: -lt 小于 -le 小于等于 -eq 等于 -gt 大于 -ge 大于等于 -ne 不等于 文件判断: -d 是否为目录 -f 是否为文件 -e 是否存在 [hadoop@centos-Reall-131 shtest]$ if [ -d /home/hadoop ]; then echo ok; else echo bad;fi ok [hadoop@centos-Reall-131 shtest]$ if [ -f /home/hadoop/ ]; then echo ok; else echo bad;fi bad [hadoop@centos-Reall-131 shtest]$ if [ -e /home/hadoop/ ]; then echo ok; else echo bad;fi ok 路径必须找得到,如果没有找到指定路径的文件,则判断条件就为false。 while语法 i=1 while ((i<=3)) do echo $i let i++ #(等价((i++))) done case语法 case $1 in start) echo "starting" ;; stop) echo "stoping" ;; *)#其他条件都不匹配下,执行该 echo "Usage: {start|stop}" esac for语法 1、方式一 N=1for N in 1 2 3 do echo $N done 或 N=1 for N in 1 2 3; do echo $N; done 或 N=1 for N in {1..3}; do echo $N; done #(代表1到3之间的数字) 2、方式二 for ((i = 0; i <= 5; i++)) do echo "welcome $i times" done 或for ((i = 0; i <= 5; i++)); do echo "welcome $i times";done 作者: intsmaze(刘洋) 出处: http://www.cnblogs.com/intsmaze/ 老铁,你的--->推荐,--->关注,--->评论--->是我继续写作的动力。 微信公众号号:Apache技术研究院 由于博主能力有限,文中可能存在描述不正确,欢迎指正、补充! 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

优秀的个人博客,低调大师

Linux自建yum仓及相关知识详解

一、使用场景 很多企业都会自建yum仓来便于企业内部的rpm包安装,这样在安装软件时就可以利用局域网内的高速带宽进行下载和安装rpm包,缩短了通过公网下载的长时间等待。 二、yum与rpm的说明 首先需要对yum与rpm包本身以及他们之间的关系进行一些说明。rpm本身是一个包管理器,所以它具备一个管理器的打包、安装查询、升级、卸载、校验、数据库管理这些基本功能,这就解释了为什么我们在安装一个rpm包前使用rpm -qpi /path/name.rpm能查到这个包中的信息,其中如果出现Relocations:(notrelocatable)这个提示,说明这个rpm包再安装过程中是不允许更改安装位置的。 使用rpm命令安装最让人头疼的问题就是软件包之间的依赖关系,使用yum工具会自动处理我们安装过程中包之间依赖关系 ,它只是一个前端的工具,并不能替代rpm包管理器。我们有没有想过,yum为什么会知道包之间的相互依赖关系呢?yum本身并不会知道包之间的依赖关系,而包之间的依赖关系等元数据,会存放在repodata这个文件中。以光盘为例,当我们使用mount /dev/cdrom /media命令后,就会在/media/下看到该目录,所以这就解释了在自定义yum仓时为什么repodata文件的路径就是yum仓baseurl的所在路径。 repodata文件中的repomd.xml就存放着各个rpm包之间的关联信息,而TRANS.TBL存放着rpm包的分组信息 而客户端在使用yum命令时,会先下载yum的配置文件,从中找到yum仓的路径,再下载repodate里的元数据,而后安装rpm包 三、yum配置文件详解 通过上面,我们知道yum是一个前端工具程序,和其他程序一样自身都有配置文件,其中就包含了yum仓的位置指向。yum的配置文件分为主配置段(/etc/yum.conf),和仓库配置段(/etc/yum.repos.d/*.repo),这么设计是因为yum仓可以有多个,如果都写在/etc/yum.conf文件中,不便于查看,所以有了仓库配置段,yum工具会将所有在/etc/yum.repos.d/目录内,以.repo结尾的文件来作为配置文件。我们可以在/etc/yum.repos.d/下为每一个yum仓定义一个.repo文件,或者在一个.repo文件中分段表示多个yum仓,.repo文件中第一行为repoID,且此repoID不能重复,这就是为什么上图下载的yum配置文件名为base的原因。 四、搭建步骤 通过上面可以知道,使用yum安装rpm包需要有repodata目录,该目录可以通过yum createrepo <director>来创建,但是有时本地服务器可能没有安装createrepo命令,又没有yum仓,以下,我们就以这种情况为例来介绍yum仓的搭建: 1.使用本地光盘充当yum源安装createreop命令 (1)放入光盘,使用mount /dev/cdrom /media 将光盘内的目录挂载到/media目录下, (2)使用vim /etc/yum.repos.d/dvd.repo 创建一个名为dvd.repo的配置文件 [base]——repoID 不能重复 name——任意字符串 baseurl——指定yum仓的位置,本地文件使用协议未file://,后面的/media为yum仓路径(repodata在/media/目录下) enable——是否启用此yum仓,1表示启用;0禁用 gpgcheck——gpg检测,1为检测;0为不检测,出于安全rpm包在发行时会用自己的私钥加密,并发布公钥,/media/目录下RPM-GPG-KEY-CentOS-6就为用户的公钥,如果gpgcheck值为1,就需要导入公钥,否则无法安装,公钥位置为前一张图所示 cost——开销值,也可以不写,不写默认为1000。前面说过yum仓可以有多个,通过cost值大小来设置yum仓的优先顺序 (3)创建好后,输入yum repolist,可以看到yum仓已经被识别 2.安装并启动httpd服务 使用yum install httpd 安装httpd程序,安装完后并启用httpd服务,通过netstat -ntl查看80端口是否正常侦听,需要通过http协议访问的安装包必须放在/var/www/html目录内。 3.复制二进制rpm包到/var/www/html目录内,并创建repodate (1)使用mirror命令从公网下载一个镜像,放置/var/www/html/内,下载后的目录为openstact-juno (2)进入/var/www/html/openstact-juno 目录删除镜像本身自带的repodata(此步骤是为测试createrepo) (3)使用createrepo/var/www/html/openstact-juno 创建新的repodata目录,创建过程中可以看到他在抽取生成新的元数据 (4)此时,局域网内通过浏览器输入 http://ip/filename就能看到结果了 五、本地yum仓验证 验证本地yum仓是否正常对外提供服务,可以在局域网内另找一台host或使用本host来进行验证,本例继续使用原有host 1.输入 vim /etc/yum.repos.d/openstack-juno.repo 创建一个配置文件,为方便测试,不检测gpgcheck 2.此时yum repolist中就包含新的openstack-juno 3.使用yum list all | less 找一个openstack-juno内的yum包,再使用 yum installopenstack-ceilometer-compute.noarch 安装,可以从repository看到,openstack-juno已被使用,此致,操作完成

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册