Linux——shell编程

Shell概述

Shell既是一种命令语言,又是一种程序设计语言(既Shell脚本)。
She可以交互式地解释和执行用户输入的命令;也可以定义各种变量,传递参数,并提供许多高级语言所具有的流程控制结构
Shell不属于Linux系统内核,可以调用系统内核的大部分相关功能来执行程序,创建文档并以并行的方式协调各个程序的运行。

1、资源重定向:既使用用户指定的文件来获取或接收信息。

输入重定向:命令<文件名
以wall命令举例:wall<file
系统会将文件file中的内容作为命令wall的输入,发给所有用户。

输出重定向:命令>文件名
以cat命令举例:cat /etc/passwd>file
系统会清空file文件,并将/etc/passwd的结果输出到file文件中。
可使用>>运算符,以追加形式输出到file。

错误重定向:命令 2>file
以gcc命令举例:gcc -c hello.c -o hello 2>file
系统会将gcc编译时产生的错误信息输出到文件file中。

2、管道:将多个简单命令连接起来,管道符号为 |
举例:ls -l /etc | grep init
输出/etc目录下包含init的关键字的文件详细信息。

3、命令连接符:连接多条shell指令
; 连接符:前后命令,先后次序依次执行。
&&连接符:前后命令,执行遵循逻辑与关系。
||连接符:前后命令,执行遵循逻辑或关系。

4、文本提取器命令:提取文档或标准输出的文本信息
awk [-F 分隔符1] ‘{print $1[“分隔符2”]$2}’
例:cat /etc/passwd| awk -F: ‘{printf $1 " " $3 " "}’
解释:
分隔符1指定源文件的分隔符,缺省的情况下,以空格默认为分隔符。
分隔符2指定打印内容中的分隔符,缺省的情况下,打印的内容不进行分隔。
$1和$3分别代表文本分割后的第一项和第二项的内容。

Shell编程

第一个Shell程序
#!/bin/sh
data="First Shell script:"
echo "data is:"
echo $data
exit 0

Shell中以#开头的一般为注释行,
第一行的 #!/bin/sh 是一种特殊的注释,#!后的参数表明了系统将会调用那个程序来执行该脚本。

1、变量的定义
变量名=值
注意:无须定义,没有细致的分类,给变量赋值时,赋值号两边不能有空格,需把值放在单引号和双引号之间。
例: var='Hello Shell'

2、变量的引用
使用$符号来引用变量
例:

var="Hello"
echo  $var    输出var的值,Hello
echo "$var"   输出var变量中存储的值,Hello
echo '$var'   输出为原样,$var

3、变量的输入
通过read关键字读取变量。

read  tmp

4、变量的分类
1)环境变量,又成永久变量
使用export设定

export num=1

2)位置变量
既执行脚本时传入脚本对应脚本位置的变量。
例:

#!/bin/sh
echo "var:"$#
echo "var    name:"$0
echo "first   var:"$1
echo "second  var:"$2
echo "third   var:"$3
exit 0

运行:sh file a b c

由输出结果可分析位置变量

var:3
var    name:first
first  	var:a
second  var:b
third   var:c

3)标准变量
标准变量也是环境变量,在bash环境建立时生成。
通过查看etc目录下的profile文件可以查看系统中的标准环境变量

4)特殊变量


? 	前一个命令执行情况,0表示成功,其他值表示失败
$ 	运行当前脚本的当前进程id号
!	运行脚本最后一个命令
* 	传递给脚本或函数的全部参数

5、变量的运算符
1)let 算术运算和数值表达式测试
例:

#!/bin/sh
i=1
let i=i+2
echo "i="$i
let i=i+4
echo "i="$i

输出结果:

i=3
i=7

2)expr 对整形变量进行算术运算
例:

#!/bin/bash
a=4
b=5
let c=a+b
echo $c
let "f = b + c"
echo $f
((d=a+c))
echo $d
e=`expr $a + $d`
echo $e

输出结果:
9 14 13 17

Shell 条件语句 语法

1、if条件语句
1)单分支if语句格式:

if [条件判断语句];then

fi

2)双分支if语句

if [条件判断语句];then

else

fi

3)多分支

if [条件判断语句];then

elif [条件判断语句];then

else

fi

2、test

test 选项  参数

如检测某个文件是否存在

if test -f  file 
then
.
.
fi

3、select语句
格式:

select 变量 in 列表
do 
...
	[break]
done

4、case 语句

case var in
 	 选项 1 ) ...;;
 	'选项 2') ...;;
 	"选项 3") ...;;
 	...
 	*)...
 esac 
 exit  0

实例:

#!/bin/sh
echo -e "a:\c"
read a
echo -e "b:\c"
read b
echo -e "select(+-*/):\c"
read var
case $var in
	'+')echo "a+b="'expr $a"+" $b';;
	'-')echo "a-b="'expr $a "-" $b';;
	'*')echo "a*b="'expr $a "*" $b';;
	'/')echo "a/b="'expr $a "/" $b';;
	*)  echo "error"
esac
exit 0

Shell循环语句

1、for循环

for 变量 in 变量列表
do 
...
done

2、while 循环

while [表达式]
do 
...
done

3、until 循环

until [表达式]
do 
...
done

Shell中的函数

[function] 函数名 [()]
{
	函数体,代码段
	[return int]
}

调用 :函数名
关键字:local,限制变量的作用范围为函数中。

Linux Shell脚本经典案例
Linux Shell 编程实例进阶

2020/7/17 19:30

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值