Linux提供了具有强大成果的各类成果强大的Shell,包罗Bash,Zsh,Tcsh和Ksh。这些Shell措施最令人诧异的成果之一就是它们的可编程性。建设简朴而有效的Linux Shell脚原来处理惩罚日常事情很是容易。另外,对这一主题的一点相识将使您当即成为Linux的高级用户。请和我们一起对Unix Shell剧本举办具体先容。
20、添加多个值
您可以利用轮回获取多个用户输入并将其添加到剧本中。以下示例说明白这一点。
#!/bin/bash
sum=0
for (( counter=1; counter<5; counter++ ))
do
echo -n "输入数字:"
read n
(( sum+=n ))
#echo -n "$counter "
done
printf "\n"
echo "功效是: $sum"
可是,省略(( ))将导致字符串通接而不是加法。因此,请在措施中查抄雷同这样的工作。
21、Bash中的函数
与任何编程方言一样,函数在Linux Shell剧本中起着至关重要的浸染。它们答允打点员建设自界说代码块以供频繁利用。下面的演示将概述成果如安在Linux bash剧本中事情。
#!/bin/bash
function Add()
{
echo -n "输入一个数字: "
read a
echo -n "输入另一个数字: "
read b
echo "相加的功效是: $(( a+b ))"
}
Add
在这里,我们像以前一样添加了两个数字。可是这里我们利用名为Add的函数完成了事情。因此,每当需要再次添加时,都可以挪用此函数,而不必再次编写该部门。
22、具有返回值的函数
函数最神奇的成果之一是它们答允将数据从一个函数通报到另一个函数。它在多种环境下很有用。查察下一个示例。
#!/bin/bash
function Greet() {
str="你好 $name, 是什么把你带到 Linux公社?"
echo $str
}
echo "-> 你叫什么名字?"
read name
val=$(Greet)
echo -e "-> $val"
在这里,输出包括从Greet()函数吸收的数据。
23、从Bash剧本建设目次
利用Shell剧本运行系统呼吁的本领使开拓人员的事情效率更高。以下简朴示例将向您展示如何从Shell剧本中建设目次。
#!/bin/bash
echo -n "输入目次名称 ->"
read newdir
cmd="mkdir $newdir"
eval $cmd
假如仔细调查,此剧本仅挪用尺度的shell呼吁mkdir并将其通报给目次名称。该措施应在您的文件系统中建设一个目次。您还可以通报呼吁以在backticks(“)内部执行,如下所示。
`mkdir $newdir`
24、确认存在后建设目次
假如您当前的事情目次中已经包括一个具有沟通名称的文件夹,则上述措施将无法事情。下面的措施将查抄是否存在名为$dir的任何文件夹,而且假如找不到则建设一个文件夹。
#!/bin/bash
echo -n "输入目次名称 ->"
read dir
if [ -d "$dir" ]
then
echo "目次已存在"
else
`mkdir $dir`
echo "目次已建设"
fi
利用eval编写此措施可以提高bash剧本编写技术。
25、读取文件
Bash剧本利用户可以很是有效地读取文件。以下示例将展示如何利用Shell剧本读取文件。建设一个名为linuxidc.com.txt的文件,个中包括以下内容。
1.Vim
2.nano
3.linuxidc
4.CentOS
5.Ubuntu
6.Emacs
该剧本将输出以上6行中的每行。
#!/bin/bash
file='linuxidc.com.txt'
while read line; do
echo $line
done < $file
26、删除文件
以下措施将演示如安在Linux Shell剧本中删除文件。该措施将首先要求用户提供文件名作为输入,假如存在则将其删除。Linux rm呼吁在此处举办删除。
#!/bin/bash
echo -n "输入文件名 ->"
read name
rm -i $name
让我们输入linuxidc.com.txt作为文件名,并在询问确认时按y。它应该删除文件。
27、附加到文件
下面的Shell剧本示例将向您展示如何利用bash剧本将数据追加到文件系统上的文件。它将在先前的linuxidc.com.txt文件中增加一行。
#!/bin/bash
echo "在追加文件之前"
cat linuxidc.com.txt
echo "7. C++" >> linuxidc.com.txt
echo "追加文件后"
cat linuxidc.com.txt
您此刻应该留意到,我们正在直接利用Linux bash剧本中的日常终端呼吁。
28、测试文件的存在
下一个shell剧本示例显示了如何从bash措施查抄文件是否存在。
#!/bin/bash
filename="/etc/hosts"
if [ -f "$filename" ]; then
echo "文件已经存在"
else
echo "文件不存在"
fi
我们直接从呼吁行通报文件名作为参数。
29、理会日期和时间
这个bash剧本示例将向您展示如何利用剧本处理惩罚日期和时间。Linux date呼吁用于获取须要的信息,我们的措施执行理会。