其实下面的都是我自己的一个人的学习过后的理解,如果有什么错误,有什么不一样的看法,可以在下面去留言。
前言
有些人会纳闷,为啥我是先讲脚本
,而不是
先去讲一讲命令或者去讲一讲这些linux的权限,用户管理这些内容。
主要的话有这几点
就我个人而言,像
硬盘分区
这样子的命令,相对于一些常用命令
来说。几乎日常是用不到的。使用频率超低。就我个人而言,半年可能才用一次。所以这一类使用频率很低的,肯定是很靠后或者是不讲的。我跟不二小段一样,奉行,要用就学,不用就不接触那么快。减少自己的学习负担。所以在这个教程里面也是一样的,要用的就讲,用不到的就不讲。而且希望是
有目的
地去学习。bash的特性是有限的,但是命令是无限的。
当然,上面的观点,以后可能就会随着时间的流逝发生改变了。但是这些都无所谓,笑笑过就好。
脚本
在我自己的理解里面,脚本
= bash特性
+ 工具命令
。
可以拿我自己的一段shell脚本出来看看。这段脚本来自我的一个ASF安装的项目。
1Remove_all_file() {
2 rm -r ${ARCHISTEAMFARM_FILES_DIR}
3 rm /bin/asf
4 if [[ "${ID}" == "raspbian" ]]; then
5 rm -r /opt/dotnet
6 fi
7}
8
9if [ $? -eq 0 ]; then
10 echo -e "${OK} ${GreenBG} $(Judge_Echo_Information "成功" "Succeed") $1 ${Font}"
11else
12 echo -e "${Error} ${RedBG} $(Judge_Echo_Information "失败" "Fail") $1 ${Font}"
13 Remove_all_file
14 exit 1
15fi
16}
如果你有一点shell脚本的知识就已经明白,脚本
= bash特性
+ 工具命令
,指代的是什么。
这脚本的内容可以分成两部分
bash特性
- 自定义函数
1Remove_all_file() { 2 3}
- IF 判断语句
1if [[ condition ]]; then 2 #statements 3fi
- 自定义函数
工具命令
echo
rm
exit
我们可以发现,bash的特性和工具命令是有机地结合起来的。
所以,要写好一个脚本,你需要懂得两方面的内容。
工具,你随手就可以写一个出来,让bash去调用。或者自己查相关的工具手册,然后去调用工具就是了。
但是bash的特性并不是随手就能增加的,而且常用的特性就那些,变量,判断符号等。
所以,我肯定是主张先去学习bash的特性,而不是先去学习工具命令。
变量
我觉得bash shell的变量应该放到第一去讲,因为写脚本基本就用定的了。
变量有什么用?
这里只是写给没有接触过变量的人看的,各位大佬就别喷我了=。=
1wget http://xxx.com/xxx/4.0.0/ASF.zip
1VERSION="4.0.0"
2wget http://xxx.com/xxx/${VERSION}/ASF.zip
注: wget是一个常用的下载工具。
聪明的你,就应该知道,如何定义一个变量VERSION="4.0.0"
以及引用一个变量了${VERSION}
。
关于定义/引用变量
的细节问题,我们下面再谈。
现在我们回到这两段代码里面,他们有什么区别?
上面的,你只是知道,他在下载一个东西。
下面的,你可以通过变量名,就知道你该填的是一个版本号。
并且通过下面的那个网址知道,如何去通过版本号获取到对应的版本资源的。
当你需要更换版本的时候,需要更改一下
VERSION="4.0.0"
就可以了。下面的整体代码都不用进行修改。
这是一个非常之简单的变量使用。
再举个例子,当你在编写一个登陆程序,需要验证用户输入的账号密码是不是正确。
这个时候,你是无法得知用户账号密码的,这个是变的值。
但是你又需要一个确定的东西去完成编写。这个时候就需要用到变量了。
需要使用变量去存储传进来的用户和密码。
而写程序的你,只需要去调用变量就可以了,在某种意义上,变量就是他们的一个代号。