Linux学习——shell编程

LINUX-----shell编程(脚本shell)

Shell的种类

1.sh
2.ksh
3.bash
4.C shell(包括csh and tcsh)
5.tcsh

shell的概念

shell提供了你与操作系统之间的通讯方式,这种通讯方式可以以交互方式(从键盘输入,并且可以立即得到响应),或者以shell script(非交互)方式执行。shell script是放在文件中的一串shell和操作系统命令,他们可以被重复使用。

本质上,shell script是命令行命令简单的组合到一个文件里面

程序基础

程序必须以下面的行开始(必须放在一个文件的第一行):
#!/bin/sh
#!用来告诉系统他后面的参数是用来执行该文件的程序

要使脚本可以执行:
chmod +x filename
然后,您可以通过输入:./filename来执行您的脚本文件

在进行shell编程时,以#开头的句子表示注释,直到这一行的结束。建议在程序中使用注释,那么即使相当长的时间没有使用该脚本,您也可以在很短的时间内明白该脚本的作用及工作原理。

变量

在其他编程语言中必须使用变量。在shell编程中,所有的变量都由字符串组成,并且不需要对变量进行声明。要赋值给一个变量,可以这样写:
变量名=值
取出变量值可以加一个美元符号(¥)(实际是shift+4)在变量前面

变量赋值时,“=”两边都不能有空格
BASH中的语句结尾不需要分号
在这里插入图片描述

编写输出Hello world 的程序

#!/bin/sh
#对变量赋值:
a=“hello world”
现在打印变量a的内容:
echo “A is:”
echo $a

在编辑器中输入以上内容,然后将其保存为一个文件HelloWorld。之后执行chmod +x HelloWorld
最后输入./ HelloWorld执行该脚本。
这个脚本将会输出:
A is:
hello world

有时候变量名很容易和其他名字混淆,比如:
S13:
num=2
echo “this is the $numnd”

思考:输出是什么?为什么?

num=2
echo “this is the $numnd”
不会打印出“this is the 2nd”,而仅仅打印“this is the”,因为shell会去搜索numnd变量的值,但这个变量是没有值的。可以使用{}来告诉shell我们要打印的是num变量:
echo “this is the ${num}nd”
这将打印: “this is the 2nd”

默认变量

$#:传入脚本的命令行参数个数
$*:所有命令行参数值,在各个参数值间留有空格
$0:命令本身(shell文件名)
$1:第一个命令行参数
$2:第二个命令行参数

局部变量

在变量首次被复制时加上local关键字可以什么一个局部变量, 例S3:
#!/bin/bash
hello="var1“
echo $hello
function func1 {
local hello=“var2”
echo $hello
}
func1
echo $hello
输出该为多少?

if语句

If [expression]
then
#code block
fi
If [expression]
then
#code block
else
#code block
fi

If [expression]
then
#code block
else if [expression]
then
#code block
else
#code block
fi
fi
比较输入三个数的大小在这里插入图片描述

比较操作

在shell中
相同 -eq =
不同 -ne !=
大于 -gt >
小于 -lt <
大于或等于 -ge
小于或等于 -le
为空 -z
不为空 -n

例:
比较整数a和整数b是否相等:if[ $a = $b ]
比较整数a是否大于整数b:if[ $a –gt $b ]
比较字符串a和b是否相等: if[ $a = $b ]
判断字符串a是否为空:if[ -z $a ]
比较整数变量a是否大于b:if[ $a –gt $b ]
注意:1、在“[”和“]”两边都留有空格
2、在“=”两边也都有空格

**-e 文件已存在
-f 文件是普通文件
-s 文件大小不为零
-d 文件是一个目录
-r 文件对当前用户可以读取
-w 文件对当前用户可以写入
-x 文件对当前用户可以执行
例S5:
#!/bin/sh
folder=/home
[ -r “$folder” ] && echo “Can read f o l d e r “ [ − f " folder“ [ -f " folder[f"folder” ] || echo “this is not file”

for语句

for循环与c语言中有所不同,在BASH中for循环的基本结构是:
for var in [list]
do
#code block
done

其中var是循环控制变量, [list]是var需要遍历的一个集合,do/done包含了循环体,相当于c语言中的大括号。另外do和for被写在同一行,必须在do前面加上“;”如: for var in [list];do

While 语句

While循环的结构是:
while [condition]
do
#code block
done

Until语句

until循环的结构是:
until [condition]
do
#code block
done
while和until的区别在于while为真时执行,until为假时执行;

Case语句

BASH语句中的case和c语言中的类似可以用于进行多项分支控制:
case “$var” in
contidion1)
;;
contidion1)
;;
*)
default statements;;
esac

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值