shell编程

需求

.sh文件添加默认参数,默认为true

当参数为true时执行操作;当参数为false时不做处理。

涉及的知识点

参数的获取

shell使用一种默认的获取参数的方法:通过$n来获取参数。其中n是一个数字,$1就代表第一个参数。

值得注意的是shell中将$0定义为脚本名

比如:

#!/bin/bash

echo '脚本名是:'$0
echo '第一参数的名称是:'$1

执行结果:

clipboard.png

同时,这种获取参数的方式也使用于方法中获取参数,也就是说获取方法的第一个参数也是用$1这种方式。

if else语法

基本的语法跟我们已经学过的任何一门语言都差不多:

if [ xxx ]
then
    xxx
else
    xxx
fi

这里比较要注意的就是,if的判断条件由[]进行包围,并且,两个括号与条件之间,必须要有空格

另一个比较值得注意的就是,由于没有用于包围程序块的{}来标示if语句的结束,所以就需要使用fi来表示if语句的结束。

设置默认值

shell中允许多种设置默认值的方式,这里我只介绍我实现的一种:

var=${a:-b}

这种写法的含义就是,当变量a的值为null空串的时候,将b作为他的值,及var=b

实现需求

基本的语法都介绍完了,下面就可以开始实现我们的需求了。

这里还有一个需要注意的是,我们最后的实现会通过函数的调用的形式来实现,所以,中间还会涉及到向函数传参的问题。

这里我就给出在函数调用的前提下实现需求的例子。

#!/bin/bash

# 程序入口函数
main() {
    # 获取传入函数的第一个参数,默认为true
    temp=${1:-true}
    
    if [ $temp = true ]
    then 
        echo '我在这里做了一些事情!'
    fi
}

# 执行main函数,并将命令的第一个参数传给方法
main $1

clipboard.png

可以看到我在这里成功实现了我们想要的效果,但是还要一点问题。

虽然我们可以通过输入参数使程序什么也不做,但是也可以通过输入一些其他字符达到效果。所以我们还要完善一下:

#!/bin/bash

# 程序入口函数
main() {
    temp=${1:-true}
    if [ $temp == true ]
    then 
        echo '我在这里做了一些事情!'
    fi
}

# 执行main函数,并将命令的第一个参数传给方法
if [[ ! -n $1 || $1 == true || $1 == false ]]
then
    main $1 
else
    echo '参数未知错误!'
fi

可以看到,我们在执行main函数之前对它加了一些限制。只有在没有参数,或者参数为truefalse的时候才会执行函数。

clipboard.png

这里要注意的一点就是,当在if语句中添加多个条件的时候,一组[]变成了两组[[]]

总结

当我们接触一门新的语言的时候,有一些是这门语言独有的特性,而这些特性正是我们需要重点注意的地方。


相关参考:http://www.runoob.com/linux/l...


朴世超
个人学习总结与项目实战问题记录
345 声望
21 粉丝
0 条评论
推荐阅读
多神经元简单神经网络的实现
数据集首先数据集选择使用Cifar-10。这个数据集合包含十个类的图片,每类6000张32 x 32的图片,共计60000张图片,其中50000训练图片,10000张测试图片。这里下载了python对应的版本:读取文件在Cifar-10的网站,...

喵先生的进阶之路1阅读 1.4k

如何使用zx编写shell脚本
在这篇文章中,我们将学习谷歌的zx库提供了什么,以及我们如何使用它来用Node.js编写shell脚本。然后,我们将学习如何通过构建一个命令行工具来使用zx的功能,帮助我们为新的Node.js项目引导配置。

chuck3阅读 1.2k

封面图
麒麟操作系统 (kylinos) 从入门到精通 - 综合篇
类别:笔记本型号:中国长城 UF712硬件平台:飞腾处理器(ArmV8 指令集)系统:银河麒麟操作系统 V10 SP1(2203) 关键词:信创,麒麟系统,linux,PKS,银河麒麟,飞腾,arm64,arm,FAQ,资料汇总特别说明:本文为综合信息...

码上世界1阅读 2.6k评论 10

封面图
windows 批处理bat,设置定时关机
文章来源:[链接] {代码...}

jigsaw2阅读 3.2k

如何批量 git pull 某个文件夹中的 git 仓库?
上代码用 shell 脚本可以比较方便实现:首先新建脚本:pull-all.sh {代码...} 填入如下内容: {代码...} 然后改一下权限: {代码...} 接下来就可以直接运行了: {代码...} 也可以不跟参数,会提示你输入目录~注意...

savokiss阅读 1.4k

封面图
Linux输出转换命令 xargs
一、基本用法xargs命令的作用,是将标准输入转为命令行参数。原因:大多数命令都不接受标准输入作为参数,只能直接在命令行输入参数,这导致无法用管道命令传递参数如下面 echo 不接受标准输出做参数,可用 xargs...

大数据王小皮阅读 872评论 1

Linux - Shell
一般使用#!/bin/bash来解析shell语法,当然还有zsh, ksh等,但一般用的最多的就是bash一、变量-e参数:解析echo中的特殊字符,如换行:echo -e "Hello \nWorld"1.1、 单引号 '如果变量被包含在单引号里...

阿南阅读 870

345 声望
21 粉丝
宣传栏