备注:本人使用cent-os 64位虚拟机,学习中主要阅读《鸟哥的私房菜》,自己对相关内容根据自己的理解进行重新整理。
Shell Script:Shell脚本,使用文本文件,包含Shell语法和指令,包含一系列Linux指令,方便我们批量执行命令,更好的管理Linux主机。
Shell指与Linux内核通信所使用的特定命令行用户界面,目前有多个不同的Shell,包括: C Shell,Korn Shell等。
Shell Script的第一行制定了使用的Shell脚本:
#!/bin/bash
Linux整个体系还是很复杂的,之前有学习一些基本的命令,并且在工作中也基本用到了。但是对Shell脚本还是没有系统的学习。作为开发人员,对自己不要求能够流畅的编写Shell脚本,但是希望自己能够看到Shell脚本,并且如果写的话可以能够很快地查资料上手学习。
计划在7、8月份主要以学习Linux为主,中间可能根据个人爱好,会穿插学习Hadoop的一些东西。
毕竟学无止境,自己还是差的很远。
先写一个基本的HelloWorld程序,通过一个HelloWorld,我们可以了解一些Shell脚本的基础语法。
[jing@localhost ~]$ mkdir shell_code
[jing@localhost ~]$ cd shell_code/
第一个Shell脚本:
#!/bin/bash
#This is my first Shell Script.
#This is comments test.
echo -e "Hello world!\a\n"
exit 0
运行:
[jing@localhost shell_code]$ sh sh01.sh
Hello world!
-1,第一行
#!/bin/bash
声明当前Shell脚本的shell名称。我们可以尝试去掉第一行的声明再次运行脚本。发现也可以正常运行脚本。可见这一行并不是必须的,但是为了防止某些系统无法正常运行,所以这一行脚本理论都会出现在每个Shell脚本中。
-2,注释:除了第一行的说明,其他以#开头的均未注释。
-3,执行的脚本具体内容。
-4,返回执行结果。通过exit 0可以返回给系统当前脚本执行结果,我们可以通过$?获取返回结果值。
[jing@localhost shell_code]$ sh sh01.sh
Hello world!
[jing@localhost shell_code]$ echo $?
0
如下是一些简单额Shell例子,我们可以通过如下的例子,大体看到一个Shell脚本的构造。
例1,根据输入的名称,展示出全名给用户
#!/bin/bash
#Use input name ,show full name
read -p "Please input your first name:" firstName
read -p "Please input your last name:" lastName
echo -e "\nYour full name is:$firstName $lastName"
具体基本使用:
[jing@localhost shell_code]$ sh sh02.sh
Please input your first name:A
Please input your last name:B
Your full name is:A B
例2:根据日期和输入文件名,创建文件的例子。
#!/bin/bash
#create files ,use input name and date
echo -e "I'll use 'touch' command to create files"
read -p "pleas input your filename:" fileName
#check fileName
fileName=${fileName:-"filename"}
date1=$(date --date="2 days ago" +%Y%m%d)
date2=$(date --date="1 days ago" +%Y%m%d)
date3=$(date +%Y%m%d)
file1=${fileName}${date1}
file2=${fileName}${date2}
file3=${fileName}${date3}
#create file
touch "$file1"
touch "$file2"
touch "$file3"
我们可以运行脚本测试。
以上即为一个基本的Linxu Shell脚本。后续我们会从基本语法来分析Shell 脚本,比如:参数定义,if逻辑判断,循环语句。