探索 Linux BASH 脚本世界 – 第三部分
' Shell 脚本'系列的前几篇文章受到了高度评价,因此我写了这篇文章来延续永无止境的学习过程。
Bash 关键字
关键字是计算机语言中具有特殊含义的单词或符号。以下符号和单词在不带引号的情况下作为命令的第一个单词时对Bash具有特殊含义。
! esac select } case fi then [[ do for until ]] done function while elif if time else in {
与大多数计算机语言不同,Bash允许使用关键字作为变量名,尽管这会使脚本难以阅读。为了使脚本易于理解,不应使用关键字作为变量名。
命令在 shell 中以$ (command) 的形式实现。您可能必须包含命令的完整路径。例如,$(/bin/date),才能正确执行。
您可以使用“ whereis ”命令了解特定程序的路径。例如,whereis date
[root@example /]# whereis date date: /bin/date /usr/share/man/man1/date.1.gz
现在就够了。我们现在不会过多谈论这些理论。接下来是脚本。
移动当前工作目录
只需在执行时在脚本末尾提供数值,即可从当前工作目录移动到任意级别。
#! /bin/bash LEVEL=$1 for ((i = 1; i <= LEVEL; i++)) do CDIR=../$CDIR done cd $CDIR echo "You are in: "$PWD exec /bin/bash
将上述代码保存为“ up.sh ”,保存在桌面上。使其可执行(chmod 755 up.sh)。运行:
./up.sh 2(将当前工作目录移动到上两级)。
./up.sh 4(将当前工作目录移动到上四级)。
用途和应用范围
在包含文件夹内的文件夹的较大的脚本中...包含位于不同位置的库、二进制文件、图标、可执行文件等,您作为开发人员可以执行此脚本以高度自动化的方式移动到所需的位置。
注意:For 是上述脚本中的一个循环,它将持续执行,直到循环的值为真。
示例输出
[root@example /]# chmod 755 up [root@example /]# ./up.sh 2 You are in: / [root@example /]# ./up.sh 4 You are in: / [root@example /]#
下载 up.sh
创建随机文件或文件夹
创建一个没有重复机会的随机文件(文件夹)。
#! /bin/bash echo "Hello $USER"; echo "$(uptime)" >> "$(date)".txt echo "Your File is being saved to $(pwd)"
这是一个简单的脚本,但它的运行却不是那么简单。
- ‘ echo ’:打印引号内的所有内容。
- ' $ ' :是 shell 变量。
- ' >> ':输出重定向到date命令的输出,后跟txt扩展名。
我们知道date命令的输出是日期,以及时、分、秒 和年份。因此,我们可以获得有组织的文件名的输出,而不会出现文件名重复的情况。当用户需要使用时间戳创建的文件以供将来参考时,这可能非常有用。
示例输出
[root@example /]# ./randomfile.sh Hello server Your File is being saved to /home/server/Desktop
您可以使用今天的日期和当前时间查看桌面上创建的文件。
[root@example /]# nano Sat\ Jul\ 20\ 13\:51\:52\ IST\ 2013.txt 13:51:52 up 3:54, 1 user, load average: 0.09, 0.12, 0.08
下面给出了上述脚本的更详细的实现,它基于上述原理工作,在收集Linux服务器的网络信息时非常有用。
下载 randomfile.sh
收集网络信息的脚本
收集Linux服务器上的网络信息。脚本太大,无法在此处发布脚本的完整代码和输出。因此,您最好使用下面的下载链接下载脚本并自行测试。
注意:您可能需要安装lsb-core包和其他所需的包和依赖项。使用 Apt或Yum安装所需的包。显然,您需要以root 身份运行该脚本,因为此处使用的大多数命令都配置为以root 身份运行。
示例输出
[root@example /]# ./collectnetworkinfo.sh The Network Configuration Info Written To network.20-07-13.info.txt. Please email this file to your_name@service_provider.com. ktop
您可以在脚本中更改上述电子邮件地址,以便将其邮寄给您。可以查看自动生成的文件。
下载 collectnetworkinfo.sh
将大写字母转换为小写字母的脚本
将大写字母转换为小写字母并将输出重定向到文本文件“ small.txt ”的脚本,可以根据需要进行修改。
#!/bin/bash echo -n "Enter File Name : " read fileName if [ ! -f $fileName ]; then echo "Filename $fileName does not exists" exit 1 fi tr '[A-Z]' '[a-z]' < $fileName >> small.txt
上述脚本只需单击一下即可将任意长度的文件的大小写从大写转换为小写,反之亦然,且几乎无需修改。
示例输出
[root@example /]# ./convertlowercase.sh Enter File Name : a.txt Initial File: A B C D E F G H I J K ...
新文件(small.txt)输出:
a b c d e f g h i j k ...
下载 convertlowercase.sh
简单计算器程序
#! /bin/bash clear sum=0 i="y" echo " Enter one no." read n1 echo "Enter second no." read n2 while [ $i = "y" ] do echo "1.Addition" echo "2.Subtraction" echo "3.Multiplication" echo "4.Division" echo "Enter your choice" read ch case $ch in 1)sum=`expr $n1 + $n2` echo "Sum ="$sum;; 2)sum=`expr $n1 - $n2` echo "Sub = "$sum;; 3)sum=`expr $n1 \* $n2` echo "Mul = "$sum;; 4)sum=`expr $n1 / $n2` echo "Div = "$sum;; *)echo "Invalid choice";; esac echo "Do u want to continue (y/n)) ?" read i if [ $i != "y" ] then exit fi done
示例输出
[root@example /]# ./simplecalc.sh Enter one no. 12 Enter second no. 14 1.Addition 2.Subtraction 3.Multiplication 4.Division Enter your choice 1 Sum =26 Do u want to continue (y/n)) ? y 1.Addition 2.Subtraction 3.Multiplication 4.Division Enter your choice 3 mul = 14812 Do u want to continue (y/n)) ? n
下载 simplecalc.sh
那么,您是否看到了以如此简单的方式创建功能强大的计算程序是多么容易。这还没有结束。我们将至少再写一篇本系列的文章,从管理角度涵盖广泛的视角。
现在就这些了。作为读者和最佳评论家,别忘了告诉我们您对这篇文章的喜爱程度和喜爱之处,以及您希望在未来的文章中看到什么。欢迎在评论中提出任何问题。在此之前,请保持健康、安全并保持关注。请点赞和分享我们,帮助我们传播。