万字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

十四、总结

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

相关文章
|
2天前
|
安全 Linux
Linux查看和剔除当前登录用户详细教程
Linux查看和剔除当前登录用户详细教程
4 0
Linux查看和剔除当前登录用户详细教程
|
3天前
|
Linux 网络安全 数据安全/隐私保护
使用宝塔Linux搭建DVWA靶场保姆级教程
这是一篇详细的教程,作者基于其在Web渗透测试领域的学习经验,利用宝塔Linux面板搭建了DVWA靶场。从安装Linux宝塔面板到通过Docker运行DVWA容器,每一步都有详尽的文字描述和配图指导,确保读者能够顺利地进行实践操作,非常适合初学者快速上手并掌握相关技能。
|
4天前
|
Linux PHP
Linux CentOS 宝塔 Suhosin禁用php5.6版本eval函数详细图文教程
【8月更文挑战第27天】本文介绍两种禁用PHP执行的方法:使用`PHP_diseval_extension`禁用和通过`suhosin`禁用。由于`suhosin`不支持PHP8,仅适用于PHP7及以下版本,若服务器安装了PHP5.6,则需对应安装`suhosin-0.9.38`版本。文章提供了详细的安装步骤,并强调了宝塔环境下与普通环境下的PHP路径差异。安装完成后,在`php.ini`中添加`suhosin.so`扩展并设置`executor.disable_eval = on`以禁用执行功能。最后通过测试代码验证是否成功禁用,并重启`php-fpm`服务生效。
11 2
|
9天前
|
JavaScript 关系型数据库 Shell
Linux shell编写技巧之随机取字符串(一)
本文介绍了Linux Shell脚本的编写技巧,包括环境配置、变量命名规则和缩进语法,并提供了一个实例练习,展示如何使用`$RANDOM`变量和`md5sum`命令来生成随机的8位字符串。
26 4
|
8天前
|
Ubuntu 网络协议 Linux
Linux下快速搭建七日杀官方私人服务器教程
本文提供了一份详尽的《七日杀》服务器搭建指南,专为Linux系统设计。教程分为九大部分,涵盖从前期准备到服务器维护的全过程。主要内容包括:选择具备公网IP的云服务器、安装Ubuntu 20 X64系统、下载SteamCMD等必备软件;详细指导如何配置服务器、设置防火墙及端口规则、启动与关闭服务器;此外还提供了服务器管理、环境配置(如设置swap分区)等实用技巧。适合有一定Linux基础的玩家参考实践。
|
8天前
|
机器学习/深度学习 Ubuntu Linux
在Linux中,如何按照该要求抓包:只过滤出访问http服务的,目标ip为192.168.0.111,一共抓1000个包,并且保存到1.cap文件中?
在Linux中,如何按照该要求抓包:只过滤出访问http服务的,目标ip为192.168.0.111,一共抓1000个包,并且保存到1.cap文件中?
|
9天前
|
Java Shell Linux
【Linux入门技巧】新员工必看:用Shell脚本轻松解析应用服务日志
关于如何使用Shell脚本来解析Linux系统中的应用服务日志,提供了脚本实现的详细步骤和技巧,以及一些Shell编程的技能扩展。
14 0
【Linux入门技巧】新员工必看:用Shell脚本轻松解析应用服务日志
|
8天前
|
Linux 网络安全 容器
【Azure App Service for Linux】Linux Web App如何安装系统未安装的包
【Azure App Service for Linux】Linux Web App如何安装系统未安装的包
|
8天前
|
监控 Shell Linux
在Linux中,如何使用shell脚本检测磁盘使用率?
在Linux中,如何使用shell脚本检测磁盘使用率?
|
8天前
|
Shell Linux 开发工具
在Linux中,如何编写shell脚本将当前目录下大于10K的文件转移到/tmp目录下?
在Linux中,如何编写shell脚本将当前目录下大于10K的文件转移到/tmp目录下?
下一篇
云函数