从历史上看,shell一直是类Unix系统的原生命令行解释器。多年来,它已被证明是Unix的主要功能之一,它本身已发展成为一个全新的话题。
Linux提供了具有强大功能的各种功能强大的Shell,包括Bash,Zsh,Tcsh和Ksh。这些Shell程序最令人惊奇的功能之一就是它们的可编程性。创建简单而有效的Linux Shell脚本来处理日常工作非常容易。此外,对这一主题的一点了解将使您立即成为Linux的高级用户。请和我们一起对Unix Shell脚本进行详细介绍。
Linux Shell脚本示例
在Linux上完成的大多数shell脚本都涉及bash shell。具有指定选择的高级用户经常使用其他Shell,例如Zsh和Ksh。由于示例的广泛使用和巨大的可用性,我们在示例中将大部分坚持使用Linux bash脚本。我们的编辑器还尝试概述一些处理bash以外的shell的shell脚本示例。您会发现不同的Shell脚本之间相当熟悉。
Linux Bash脚本
Bash又名Bourne Again Shell,是当今大多数Linux发行版中的默认命令行解释器。它是对早期Bourne Shell的升级,学习bash shell脚本将使您更快地了解其他shell脚本。因此,请自己尝试这些简单的示例以获得第一手经验。
1. Hello World
程序员经常通过学习hello world程序来学习新语言。这是一个简单的程序,可将字符串“ Hello World”打印到标准输出。使用vim或nano之类的编辑器创建文件linuxidc.sh并将以下几行复制到其中。
- #!/bin/bash
- echo "Hello World,www.linuxidc.com"
保存并退出文件。您需要使用以下命令使该文件可执行。
- $ chmod a + x linuxidc.sh
您可以使用以下两个命令中的任何一个来运行它。
- $ bash linuxidc.sh
- $ ./linuxidc.sh
它将打印出传递给脚本内部echo的字符串。
2. 使用echo进行打印
echo命令用于以bash格式打印信息。它类似于C函数'printf',并提供许多常用选项,包括转义序列和重定向。
将以下几行复制到一个名为linuxidc.com.sh的文件中,并使其可执行,如上所述。
- #!/bin/bash
- echo "Linux公社www.linuxidc.com"
- echo -n "不使用换行符打印文本"
- echo -e "\nUbuntu \t CentOS \t debian\n"
运行脚本,看看它做了什么。-e选项用于告诉echo传递给它的字符串包含特殊字符,需要扩展功能。
3. 使用注释
注释对于文档很有用,并且是高质量代码库的要求。在处理关键逻辑的代码中放入注释是一种常见的做法。要注释掉一行,只需在它前面使用#(散列)字符。检查以下bash脚本示例。
- #!/bin/bash
- # 两个值相加
- ((sum=17+19))
- #打印结果
- echo $sum
该脚本将输出数字36。请在某些行之前使用#检查如何使用注释。但是第一行是一个例外。它被称为shebang,让系统知道运行此脚本时使用哪个解释器。
4. 多行注释
许多人使用多行注释来记录其Shell脚本。在下一个名为linuxidc.com.sh的脚本中检查如何完成此操作。
- #!/bin/bash
- : '
- 该脚本计算
- 5的平方。
- '
- ((area=5*5))
- echo $area
注意多行注释是如何放置在:' and '字符中的。
5. While循环
while循环结构用于多次运行某些指令。请查看以下名为while.sh的脚本,以更好地理解此概念。
- #!/bin/bash
- i=0
- while [ $i -le 2 ]
- do
- echo Number: $i
- ((i++))
- done
因此,while循环采用下面的形式。
- while [ condition ]
- do
- commands 1
- commands n
- done
方括号是必需的。
6. For循环
for循环是另一种广泛使用的bash shell构造,它允许用户有效地遍历代码。下面演示一个简单的示例。
- #!/bin/bash
- for (( a=1; a<=5; a++ ))
- do
- echo -n "$a "
- done
- printf "\n"
将此代码保存在名为inuxidc.com.sh的文件中,然后使用./linuxidc.com.sh运行它。不要忘记使其可执行。该程序应打印出数字1到15。
7、接收用户的输入
获取用户输入对于在脚本中实现用户交互至关重要。下面的Shell脚本示例将演示如何在Shell程序中接收用户输入。
- #!/bin/bash
- echo -n "输入内容:"
- read something
- echo "您输入了:$something"
因此,read结构后跟一个变量名,用于获取用户输入。输入存储在这个变量中,可以使用$符号访问它。
8. If语句
如果语句是Unix shell脚本中最常见的条件构造,则它们采用以下形式。
- if CONDITION
- then
- STATEMENTS
- fi
仅当条件为true时才执行语句。fi关键字用于标记if语句的结尾。下面是一个简单的示例。
- #!/bin/bash
- echo -n "请输入数字: "
- read num
- if [[ $num -gt 17 ]]
- then
- echo "数字大于17."
- fi
仅当通过输入提供的数字大于17时,以上程序才会显示输出。该-gt表示大于; 类似地-lt小于;-le小于等于;和-Ge为大于等于。[[]]是必需的。
9. 使用If Else进行更多控制
将else构造与if结合使用,可以更好地控制脚本的逻辑。一个简单的例子如下所示。
- #!/bin/bash
- read n
- if [ $n -lt 10 ];
- then
- echo "这是一个数字"
- else
- echo "这是一个两位数的数字"
- fi
else部分需要放在if的操作部分和fi之间。