万字Linux shell详细教程,包教包会,学不会找我!(三)

简介: 万字Linux shell详细教程,包教包会,学不会找我!

十一、Shell 函数

花里胡哨的语言我就不说了,来看一个demo函数:

demoFun(){
    echo "測試一下我的函數!"
}
echo "函数开始执行"
demoFun
echo "-函数执行完毕"

如果你学过别的语言,你一定一眼就看懂了。

完整演示如下:

1.png

到这里我再插入一个例子:从键盘读入10个数,显示最大值和最小值

代码为:

printf "请输入十个数字: "  
read   
biggest=$(echo "$REPLY" | tr ' ' '\n' | sort -rn | head -n1)  
smallest=$(echo "$REPLY" |  tr ' ' '\n' | sort -rn | tail -n1)  
echo "最大的数字为:  $biggest"  
echo "最小的数字为:  $smallest"

完整演示如下:

1.png

下面定义一个带有return语句的函数:

代码为:

add(){
    echo "这个函数为求两个函数之和.."
    echo "输入第一个数字: "
    read aNum
    echo "输入第二个数字: "
    read bNum
    echo "两个数字分别为 $aNum 和 $bNum !"
    return $(($aNum+$bNum))
}
add
echo "输入的两个数字之和为 $? !"

完整演示如下:

1.png

十二、Shell 输入/输出重定向

相关参数如下:

command > file  将输出重定向到 file。
command < file  将输入重定向到 file。
command >> file 将输出以追加的方式重定向到 file。
n > file  将文件描述符为 n 的文件重定向到 file。
n >> file 将文件描述符为 n 的文件以追加的方式重定向到 file。
n >& m  将输出文件 m 和 n 合并。
n <& m  将输入文件 m 和 n 合并。
<< tag  将开始标记 tag 和结束标记 tag 之间的内容作为输入。

做一些例子:

1)输出重定向

将输出重定向到wen文件夹

1.png

再比如我把test16.sh这个文件重定向到han这个文件

1.png

这样的重定向有一个缺点就是会覆盖原来的内容,如果你不想覆盖原来的内容,你可以使用:

command >> file 将输出以追加的方式重定向到 file。

完整演示如下:

1.png

如此我们可以看到已经追加进去了。

2)输入重定向

如果要数一下文件夹内有多少行:

 wc -l wen

1.png

如果我们用重定向的方式,将输入重定向到 wen文件:

 wc -l <  wen

演示为:

1.png

3)Here Document

Here Document 是 Shell 中的一种特殊的重定向方式,用来将输入重定向到一个交互式 Shell 脚本或程序。

语法为;

command << delimiter
    document
delimiter

举个例子:

 wc -l << EOF
   欢迎大家
   这里是川川菜鸟
   教程
EOF

演示:

1.png

也可以以脚本方式执行:

cat << EOF
    欢迎大家
   这里是川川菜鸟
   教程
EOF

演示如下:

1.png

4)/dev/null 文件

如果希望执行某个命令,但又不希望在屏幕上显示输出结果,那么可以将输出重定向到 /dev/null:

1.png

十三、实战练习

1)Linux例题

如果以下操作你看不懂的话,请看我这一篇文章,看完这一篇文章后,你就看得懂了:cat详细教程

输入输出重定向:

①新建文件file1,输入:

Hello,

Linux!

保存并退出。新建文件file2,输入:

World!

保存并退出。

将file1和file2的内容显示在终端上,并重定向到文件file3。

将file1的内容追加到文件file3。


操作步骤:

1.创建一个新的文件夹work

mkdir work

2.切换目录

cd work/

完整演示:

1.png

3.创建并编辑新文件

touch file1

编辑文件

vim file1

查看文件:

cat file

完整演示:

1.png

4.创建另一个文件

同样的道理,完整演示如下:

1.png

5.重定向到file3文件

cat file1 file2 >>file3

完整演示如下:

1.png

6.将file1的内容追加到文件file3

cat file1>>file3

完整演示如下:

1.png

②管道:

统计文件file3中出现“hello”的行数并显示

grep Hello file3 |wc -l

演示如下:

1.png

③管道和输入输出重定向:

进入目录/home/student,用ls –l长格式的方式列出当前目录下的文件和目录,并将其前5条信息保存到文件list中。

创建新文件夹,并编辑list.txt内容如下:

file1
file2
file3
file4
file5
file6
file7

完整演示:

1.png

查看一下:

1.png

查看当前目录下文件和目录

ls -al

演示:

1.png

筛选前5的数据加到file3中:

ls -l |head -n 5 >>list.txt

完整演示如下:

1.png

2)shell练习题

① 在/home目录中创建50个目录,目录名称依次为:a1,……,a50;

创建一个sh文件:

touch 1.sh

内容为:

i=1
while [ $i -le 50 ]
do
mkdir a$i
i=$((i+1))
done

完整演示:

1.png

② 编写一个程序,它的作用是:先查看一下/root/test/logical这个名称是否存在。若不存在,则创建一个文件,使用touch来创建,创建完成后离开;如果存在,判断该名称是否为文件,若为文件,则显示其行数;如果不是文件,则离开;

创建2.sh

touch 2.sh

内容为:

if [ ! -e /home/yifan/maying/shell/case5/logical ]  
then
    touch logical  
elif 
    [ -f /home/yifan/maying/shell/case5/logical ]  
then 
    rm -f /home/yifan/maying/shell/case5/logical && mkdir /home/yifan/maying/shell/case5/logical  
elif 
    [ -d /home/yifan/maying/shell/case5/logical ]  
then 
    rm -r /home/yifan/maying/shell/case5/logical  
fi 

演示如下:

11.png

查看一下:

1.png

③编写一个shell脚本,从键盘读入10个数,显示最大值和最小值

printf "请输入十个数字: "  
read   
biggest=$(echo "$REPLY" | tr ' ' '\n' | sort -rn | head -n1)  
smallest=$(echo "$REPLY" |  tr ' ' '\n' | sort -rn | tail -n1)  
echo "最大的数字为:  $biggest"  
echo "最小的数字为:  $smallest"

完整演示如下:

1.png

④ 编写一个脚本,打印任何数的乘法表。如:输入3,则打印

11=1

21=2 22=4

31=3 32=6 33=9

代码如下:

echo "输入一个数:"
read num
for ((  i=1;i<=$num;i++  ))
do
   for ((  j=1;j<=$num;j++  ))
   do
      [  $j  -le  $i  ]  &&  echo -n "${i}*${j}=$((i*j))      "    #判断j是否小于i,当
j大于i时不输出,输出不换行,末尾加一个制表符
   done
   echo ""           #输出一个换行符                
done

完整演示如下:

1.png

十四、总结

本篇文章写得很详细,不管你是不是零基础,相信你都能看懂,本文主要在一些基础知识讲解,并没有太多的进阶,本人主要是为了完成作业学习这个,这些内容已经足够我完成作业了。

相关文章
|
11天前
|
弹性计算 Ubuntu Linux
2024年幻兽帕鲁/palworld云主机开服教程(Linux/Centos)
在帕鲁的世界中,与神奇的生物共度悠闲时光是一种无与伦比的乐趣。然而,有时官方服务器的不稳定性可能会给游戏体验带来延迟和卡顿。 为了告别这些问题,部署自己的幻兽帕鲁服务器成为了一个不错的选择。通过搭建专属的游戏服务器(Dedicated Server),和小伙伴们获得一个专属的服务空间,获得顺畅流畅的游戏体验。 在本文中,我们将介绍如何使用自己的服务器来部署属于自己的幻兽帕鲁服务器,与小伙伴们共同展开一场精彩的冒险之旅。
|
5天前
|
Ubuntu Shell Linux
|
5天前
|
弹性计算 安全 Linux
阿里云ECS Linux系统漏洞修复详细教程
阿里云ECS Linux系统漏洞修复详细教程
|
11天前
|
弹性计算 Ubuntu Linux
2024年Windows/Linux搭建幻兽帕鲁主机教程(超详细图文)
幻兽帕鲁作为一款热门多人在线游戏,为了给玩家提供稳定、流畅的联机体验,阿里云提供了高效便捷的快速部署解决方案,本文将为大家介绍阿里云一键部署幻兽帕鲁联机服务器详细教程。
|
18天前
|
弹性计算 Linux 数据安全/隐私保护
1分钟幻兽帕鲁社区服务器搭建架设开服教程(Linux)
1分钟幻兽帕鲁社区服务器搭建架设开服教程(Linux)玩转幻兽帕鲁服务器,幻兽帕鲁Palworld多人游戏专用服务器一键部署教程,阿里云推出新手0基础一键部署幻兽帕鲁服务器教程,傻瓜式一键部署,3分钟即可成功创建一台Palworld专属服务器,成本仅需26元,阿里云百科分享2024年新版基于阿里云搭建幻兽帕鲁服务器教程
42 3
|
19天前
|
Unix Shell Linux
在Unix/Linux Shell中,管道(`|`)和重定向
在Unix/Linux Shell中,管道(`|`)和重定向
16 1
|
19天前
|
Shell Linux
在Linux Shell中,信号
在Linux Shell中,信号
11 1
|
20天前
|
Ubuntu Java Linux
百度搜索:蓝易云【java环境搭建Ubuntu Linux教程】
现在你已成功在Ubuntu Linux上搭建了Java环境,可以开始开发Java应用了。
31 6
|
20天前
|
算法 Shell Linux
Linux的shell命令——判断与循环
Linux的shell命令——判断与循环
20 1
|
20天前
|
存储 Shell Linux
Linux的shell命令——变量用法
Linux的shell命令——变量用法
23 0

相关产品

  • 云迁移中心