脚本,变量以及在终端中显示输出

其实下面的都是我自己的一个人的学习过后的理解,如果有什么错误,有什么不一样的看法,可以在下面去留言。

前言

有些人会纳闷,为啥我是先讲脚本,而不是先去讲一讲命令或者去讲一讲这些linux的权限,用户管理这些内容。

主要的话有这几点

  • 就我个人而言,像硬盘分区这样子的命令,相对于一些常用命令来说。几乎日常是用不到的。使用频率超低。就我个人而言,半年可能才用一次。所以这一类使用频率很低的,肯定是很靠后或者是不讲的。

  • 我跟不二小段一样,奉行,要用就学,不用就不接触那么快。减少自己的学习负担。所以在这个教程里面也是一样的,要用的就讲,用不到的就不讲。而且希望是有目的地去学习。

  • bash的特性是有限的,但是命令是无限的。

当然,上面的观点,以后可能就会随着时间的流逝发生改变了。但是这些都无所谓,笑笑过就好。

脚本

在我自己的理解里面,脚本 = bash特性 + 工具命令

可以拿我自己的一段shell脚本出来看看。这段脚本来自我的一个ASF安装的项目

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Remove_all_file() {
rm -r ${ARCHISTEAMFARM_FILES_DIR}
rm /bin/asf
if [[ "${ID}" == "raspbian" ]]; then
rm -r /opt/dotnet
fi
}

if [ $? -eq 0 ]; then
echo -e "${OK} ${GreenBG} $(Judge_Echo_Information "成功" "Succeed") $1 ${Font}"
else
echo -e "${Error} ${RedBG} $(Judge_Echo_Information "失败" "Fail") $1 ${Font}"
Remove_all_file
exit 1
fi
}

如果你有一点shell脚本的知识就已经明白,脚本 = bash特性 + 工具命令,指代的是什么。

这脚本的内容可以分成两部分

  • bash特性

    • 自定义函数

      1
      2
      3
      Remove_all_file() {

      }
    • IF 判断语句

      1
      2
      3
      if [[ condition ]]; then
      #statements
      fi
  • 工具命令

    • echo

    • rm

    • exit

我们可以发现,bash的特性和工具命令是有机地结合起来的。

所以,要写好一个脚本,你需要懂得两方面的内容。

工具,你随手就可以写一个出来,让bash去调用。或者自己查相关的工具手册,然后去调用工具就是了。

但是bash的特性并不是随手就能增加的,而且常用的特性就那些,变量,判断符号等。

所以,我肯定是主张先去学习bash的特性,而不是先去学习工具命令。

变量

我觉得bash shell的变量应该放到第一去讲,因为写脚本基本就用定的了。

变量有什么用?

这里只是写给没有接触过变量的人看的,各位大佬就别喷我了=。=

1
wget http://xxx.com/xxx/4.0.0/ASF.zip
1
2
VERSION="4.0.0"
wget http://xxx.com/xxx/${VERSION}/ASF.zip

注: wget是一个常用的下载工具。

聪明的你,就应该知道,如何定义一个变量VERSION="4.0.0"以及引用一个变量了${VERSION}

关于定义/引用变量的细节问题,我们下面再谈。

现在我们回到这两段代码里面,他们有什么区别?

  • 上面的,你只是知道,他在下载一个东西。

  • 下面的,你可以通过变量名,就知道你该填的是一个版本号。

    并且通过下面的那个网址知道,如何去通过版本号获取到对应的版本资源的。

    当你需要更换版本的时候,需要更改一下VERSION="4.0.0"就可以了。下面的整体代码都不用进行修改。

这是一个非常之简单的变量使用。

再举个例子,当你在编写一个登陆程序,需要验证用户输入的账号密码是不是正确。

这个时候,你是无法得知用户账号密码的,这个是变的值。

但是你又需要一个确定的东西去完成编写。这个时候就需要用到变量了。

需要使用变量去存储传进来的用户和密码。

而写程序的你,只需要去调用变量就可以了,在某种意义上,变量就是他们的一个代号。

0%