Java教程

shell脚本

本文主要是介绍shell脚本,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Linux shell

shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。

实际上shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。不仅如此,shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。shell编程语言具有普通编程语言的很多特定,比如它也有循环结构和分支控制结构等,用这种编程语言编写的shell程序与其他应用程序具有同样的结果

shell和python都是弱语言

定义变量规则 :变量名=值

shell定义的规则

  • 变量名=值
  • 等号两边不能由空格
  • 定义linux命令需要用反单引号``
  • 使用:echo $变量名

区分单引号和双引号的不同和相同点

shell脚本的规则

  1. 脚本名称使用.sh结尾

  2. 第一行必须写 #!/bin/bash

  3. 输入语句用read

  4. 输出语句用: echo

  5. 调用的时候

    ./脚本名.sh(权限的问题)

    sh 脚本名.sh

注意点:read可以传递多个数据

read -p "input name and password:" name password

参数传参

向.sh文件中传递数据

格式: sh 脚本名.sh 参数

$1:接收第一个参数~~~~$n

$n:文件名称

$@:所有参数s

$#参数格式

比较运算符

比较运算符(数字)

-eq 比较是否相等

-ne 比较不相等

-gt 比较大于

-ge 比较大于等于

-lt 比较小于

-le 小于等于

字符串判断:==,!=

逻辑运算符 -a与 -o或 !非

((i++)) ((i+=1))

s=$(($s+$i)) s=$[$s+$i] ((s=$s+$i))

if语句(分支结构)

格式:

if [条件]
then
语句
else
语句
fi

注意点

  1. if后面有空格
  2. 条件两边有空格
  3. if条件里面存在变量,需要$,而且变量两边需要双引号
  4. fi是结束标识
if [ 条件 ]
	then
	语句
	elif [ 条件 ]
	then
	语句
	......
	else
	语句
	fi

Case循环语句

case规则
	case $变量名 in
	"值")
	语句;;
	"值")
	语句;;
	.....
	esac

注意:

  1. Case这第一行以in结尾
  2. 值可以是字符串也可以是数字,如果数据范围[0-9]
  3. 结束语句 ;; (语句后面跟两个封号)
  4. 以esac结束标识

for循环

for 变量 in 列表
do
语句
done

如果列表中的元素过多的时候,需要怎么做?

seq mix step max

注意:mix开始数据 step :间隔 max结束数据,如果step为1,可以忽略

结束标志done

While循环

while [ 条件 ]
	do
    语句
    done

注意:结束done

while后有空格,参数之间也注意

函数

定义格式
	函数名(){代码}
调用格式
	函数名

注意点:必须先定义一个函数,然后再调用它

参数传递

函数中的参数 使用$n来接收数据

返回值

shell中函数默认存在返回值

查看函数的返回值$?

注意点:

如果没有代码错误默认返回值为0

有代码错误返回1

查看返回值内容:$?

练习

练习1:使用shell脚本,输出当前所在的目录

#!/bin/bash
dir=`pwd`
echo $dir

练习2:计算/etc目录下有多少个文件,用shell脚本实现

#!/bin/bash
cd /etc
filenum=`ls|wc -l`
echo $filenum

实现统计任何指定目录下的文件个数

#!/bin/bash
read dir
cd $dir
filenum=`ls|wc -l`
echo $filenum

判断用户输入的用户名和密码是否为admin 123456,如果是则提示登录成功,否则提示失败

#!/bin/bash
read -p "输入用户和密码:" name password
if [ "$name" == "lucky" -a "$password" == "123456" ]
then
echo "登录成功"
else
echo "失败"
fi

输入数字,判断是否大于0,如果大于0则将该数字-1并输出,否则+1输出

#!/bin/bash
read -p "输入数字" num
if [ "$num" -gt 0 ];then
((num--))
echo $num
else
((num++))
echo $num
fi

判断用户输入的目录是否存在,如果存在则统计目录下的文件个数,否则提示用户该目录不存在

#!/bin/bash
read -p "输入目录名称:" dirname
if test -d "$dirname"
then
cd $dirname
filename=`ls|wc -l`
echo $filename
else
echo "目录不存在"
fi

if [ 条件 ]
then
语句
elif [ 条件 ]
then
语句
else
语句
fi

判断学生的成绩,80<score<=100提示优秀,60<score<=80提示良好,其他则提示不及格

#!/bin/bash
read -p "输入成绩:" score
if [ "$score" -gt 80 -a "$score" -le 100 ]
then
echo "优秀"
elif [ "$score" -gt 60 -a "$score" -le 80 ]
then
echo "一般"
else
echo "不及格"
fi

判断用户输入的内容是否为空,为空则提示,不为空则判断是否为目录,不为目录则判断是否为文件,否则提示错误信息

#!/bin/bash
read -p "请输入:" a
if [ -z "$a" ]
then
echo "为空"
elif [ -d "$a" ]
then
echo "为目录"
elif [ -f "$a" ]
then
echo "为文件"
else
echo "出错"
fi

输入一个序号,判断该用户选择哪款产品,A:笔记本 B:电饭煲 C:小台灯

#!/bin/bash
read -p "输入产品" pro
case $pro in
"A")
echo "笔记本";;
"B")
echo "电饭煲";;
"C")
echo "小台灯";;
esac

请输入对客服的满意度,【0-3】不满意,【4-6】满意,【7-9】非常满意

#/bin/bash
read -p "评价:" pj
case $pj in
[0-3])
echo "不满意";;
[4-6])
echo "满意";;
[7-9])
echo "非常满意"
esac

输出1-6之间的数

#!/bin/bash
for i in 1 2 3 4 5 6
do
echo $i
done
for 变量名 in 列表
do
语句
done

求1-100之间的和

#!/bin/bash
i=1
sum=0
while [ "$i" -le 100 ]
do
 sum=$((sum+$i))
((i++))
done
echo $sum
这篇关于shell脚本的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!