网站搜索

畅游 Linux BASH 脚本世界 - 第三部分


Shell 脚本”系列之前的后续文章受到高度赞赏,因此我写这篇文章是为了扩展永无止境的学习过程。

  1. 了解基本的 Linux Shell 脚本语言技巧 – 第一部分
  2. 供 Linux 新手学习 Shell 编程的 5 个 Shell 脚本 - 第二部分
重击关键字

关键字是对计算机语言具有特殊含义的单词或符号。当以下符号和单词不加引号并且是命令的第一个单词时,它们对 Bash 具有特殊含义。

! 			esac 			select 		} 
case 			fi 			then 		[[ 
do 			for 			until 		]] 
done 			function 		while 		elif
if 			time 			else 		in 		{

与大多数计算机语言不同,Bash 允许将关键字用作变量名称,尽管这可能会使脚本难以阅读。为了使脚本易于理解,变量名称不应使用关键字。

命令在 shell 中实现为 $(命令)。您可能必须包含命令的完整路径。例如,$ (/bin/date),以便正确执行。

您可以使用“whereis”命令知道特定程序的路径。例如,其中的日期

[root@tecmint /]# 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 是一个循环,它将继续执行,直到循环的值为 true。

样本输出
[root@tecmint /]# chmod 755 up
[root@tecmint /]# ./up.sh 2
You are in: /

[root@tecmint /]# ./up.sh 4 
You are in: / 

[root@tecmint /]#

下载up.sh

创建随机文件或文件夹

创建一个没有重复机会的随机文件(文件夹)。

#! /bin/bash

echo "Hello $USER";
echo "$(uptime)" >> "$(date)".txt
echo "Your File is being saved to $(pwd)"

这是一个简单的脚本,但它的工作原理并不那么简单。

  1. echo‘:打印引号内写入的所有内容。
  2. $‘:是一个 shell 变量。
  3. >>‘ :输出被重定向到 date 命令的输出,后跟 txt 扩展名。

我们知道date命令的输出是日期,而时间则为小时分钟、强>第二以及年份。因此,我们可以获得组织好的文件名的输出,而不会出现文件名重复的情况。当用户需要使用时间戳创建的文件以供将来参考时,它可能非常有用。

样本输出
[root@tecmint /]# ./randomfile.sh  
Hello server 
Your File is being saved to /home/server/Desktop

您可以查看在桌面上创建的文件,其中包含今天的日期和当前时间。

[root@tecmint /]# 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 服务器的网络信息非常有用。

下载随机文件.sh

收集网络信息的脚本

收集 Linux 服务器上的网络信息。该脚本太大,无法在此处发布脚本的完整代码和输出。因此,您最好使用下面的下载链接下载脚本并自行测试。

注意:您可能需要安装lsb-core软件包以及其他必需的软件包和依赖项。 AptYum 所需的软件包。显然,您需要以 root 身份运行该脚本,因为此处使用的大多数命令都配置为以 root 身份运行。

样本输出
[root@tecmint /]# ./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@tecmint /]# ./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@tecmint /]# ./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

那么您是否看到以如此简单的方式创建一个强大的计算程序是多么容易呢?这还不是结束。我们将在本系列中至少再撰写一篇文章,从管理角度涵盖广泛的视角。

目前为止就这样了。作为读者和最好的评论家,请不要忘记告诉我们您对本文的喜爱程度和内容,以及您希望在以后的文章中看到什么。有任何问题都非常欢迎评论。在那之前保持健康安全调整点赞分享我们并帮助我们传播。