shell脚本的超级简单实用入门

什么是shell脚本(shell script)

简单来说就是将在Linux中命令行整合成一个程序,这就是shell script

如何使用shell script

first step:开始编辑shell script

有多种编译方式,这里我们可以使用vim来编辑


vi filename

second step: 进入编辑器

在编辑器中,我们可以使用i来开始编辑,用 :wq 来保存并退出,不想保存时可以用 :q 直接退出。


#!/bin/bash

我们使用以上代码段开头来表示编译器的选择,不可缺少。

third step: 开始输入你要做的内容

forth step: 如何运行

首先先进行编译

>>sudo chmod u+x filename.sh 

编译成功后,使用ls你会发现文件名被高亮。 之后我们可以通过./来进行运行

>>./filename.sh par1 par2 

par1代表传入参数1,par2代表传入参数2,…以此类推,可以传多个参数

下面补充一些常用的小Tips

简单介绍一下

  1. 赋值采用

var_name=…

var_name可以随意你定,注意等号前不要跟空格


如果有var=var+1之类的写法,会报错,应该写为

let var=var+1


  1. for循环

基本框架


for var in array#var为你要遍历的东西,array为你要遍历的范围,用法类似于python
do
	if ...
	then
		...
	else
		...
fi
done
  1. 函数用法

#函数定义

function function_name(){ 

	...

	#函数递归调用:par1为参数1,par2为参数2

	function_name par1 par2 ...
	...
}
#函数调用:par1为参数1,par2为参数2

function_name par1 par2 ...
  1. 符号介绍

“ * ”表示通配符,用于匹配字符串将被删除的字串。

“.”表示字符串中分隔符,可以为任意一个或 多个字符。

“%”表示从右向左匹配,

“#”表示从左向右匹配,

“ \ ”表示替换,都属于非贪婪匹配,即匹配符合通配符的最短结果。

与“%”、“#”和“/”
类似的有“%%”、“##”和“//”,都属于贪婪匹配,即匹配符合通配符的最长结果。

举几个栗子哈:

#删除VALUE字符串中以分隔符“.”匹配的右边字符,保留左边字符。
${VAR%.*}${VAR%%.*}
#VAR代表变量名,%代表从右往左匹配,“.*"表示删除"."后面的字符。而外部的${}代表取值

#删除VALUE字符串中以分隔符“.”匹配的左边字符,保留右边字符。
${VALUE#*.}或${VALUE##*.}:
#VAR代表变量名,%代表从右往左匹配,“.*"表示删除"."后面的字符。而外部的${}代表取值
${VALUE/OLD/NEW}${VALUE//OLD/NEW}

补充:${#VALUE}:计算VALUE字符串的字符数量。

  1. 参数的使用

使用shell脚本的时候,我们可以传入一些参数进去。


>>./filename.sh par1 par2 ...

其中par1代表的是参数1,par2是参数2,那在shell脚本内,我们该怎么调用呢?

echo $1 #表示输出参数1
echo $2 #表示输出参数2
	....

这里大家应该比较清楚了,$1代表的是参数一。$2代表的是参数2…以此类推

  1. 变量的使用
    shell里的变量的使用方法比较类似于Python,在使用时不需要声明类型。
    比如我们要定义一个目录为pDir目录下的文件file,我们可以这么写
#假设pDir="/home",file=filename
dir=$pDir"/"$file

这段代码将dir赋值为file的路径。此时dir的值为“/home/filename"。
这里我们使用用**$**表示取值。

我们可以尝试另一段代码感受一下

#假设pDir="/home",file=filename
dir=pDir"/"file

此时dir的值将被定义为"pDir/file"

这样大家应该能感受到以下几点
1. 变量类型无需声明,直接使用varname=value这样的赋值即可。
2. varname作为参数时,(如echo varname)将被解析为一个字符串如(”varname")  
3. 当我们想要得到value时,我们需要echo $varname,使用 "$"符号进行取值

这篇博客差不多就写到这拉,算是个入门的大杂烩,想要系统的学习还是需要花很多时间的
有问题欢迎google,或者留言联系。

附上一些较好的参考博客:
shell变量、赋值和运算
https://www.cnblogs.com/ladawn/p/8412553.html
处理shell脚本输入参数:
https://www.jianshu.com/p/761b19247979
shell字符串处理技巧:
https://blog.csdn.net/mountaindancer/article/details/78519998
shell echo:
https://blog.csdn.net/vip_wangsai/article/details/72592649
shell 循环:
https://www.cnblogs.com/zhangmingcheng/p/5812750.html
python参数获得:https://www.cnblogs.com/saiwa/articles/5253713.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章