如何在VPS上编写简单的Shell脚本(第2部分)

来自菜鸟教程
跳转至:导航、​搜索

介绍

本教程的第二部分将教您更多关于 VPS 上的 shell 脚本的基本命令。 他们负责向用户显示和从用户那里收集信息。 本文假设您已经根据 第一篇教程 配置了您的 shell 脚本文件夹。

回声命令

此命令使您能够为用户显示信息。 您可以同时显示简单的文本字符串、变量或两者。 它有两个参数:-n,使显示的文本后面不跟新行,和-e,在字符串中启用以下“代码”集:

\a   - Alert sound
\b   - Backspace character
\c   - Don’t display new line
\e   - Escape character
\n   - New line
\r   - Carriage return
\t   - Horizontal tab
\0xx - ASCII character
\\   - Backslash

例如,以下命令的执行完全相同:

echo -e "Text\c"
echo -n "Text"

要使用 echo 显示变量,只需将其写在前面带有“$”字符的字符串中,如下所示:

string=World!
echo "Hello $string"

您可以将文本、命令和变量组合在一个字符串中。 您甚至可以在同一行代码中包含多行文本,只需在要输出新行时使用“\n”命令即可。

带回声的格式化文本

使用 echo 命令可以以多种颜色和样式显示文本。 并不是所有的终端客户端都能正常工作,所以请记住,人们在运行脚本时可能会得到与你不同的结果。 因为它们只是视觉上的变化,所以大多数时候这不是一个真正的问题。 每个自定义(使文本变为粗体、下划线或彩色)都由转义序列定义,转义字符后面的代码(由 '\e' 定义),如下所示:

echo -e "This is \e[1mBold"

这是一个包含最常见代码的小表:

Bold:            \e[1m
Dim:             \e[2m
Underlined:      \e[4m
Inverted colors: \e[7m

例如,您可以混合使用它们来创建带下划线的粗体文本,并且可以通过键入“\e[0m”来重置它。

echo -e "\e[4mThis \e[1mis\e[0m \e[7man example \e[0mstring"

试一试,看看它的外观。

颜色基本上是一样的。 每种颜色都有一个代码,它们可以像格式化代码一样插入。 下表列出了大多数终端客户端支持的颜色:

Black:         \e[30m (Text) and \e[40m (Background)
Red:           \e[31m (Text) and \e[41m (Background)
Green:         \e[32m (Text) and \e[42m (Background)
Yellow:        \e[33m (Text) and \e[43m (Background)
Blue:          \e[34m (Text) and \e[44m (Background)
Magenta:       \e[35m (Text) and \e[45m (Background)
Cyan:          \e[36m (Text) and \e[46m (Background)
Light gray:    \e[37m (Text) and \e[47m (Background)
Default color: \e[39m (Text) and \e[49m (Background)

您还可以将文本颜色与不同的背景颜色混合,并将常规格式代码添加到彩色文本中:

读取命令

要从用户那里获取信息,请使用 read 命令。 它将存储用户在按下 ENTER 之前输入的任何内容并将其存储在变量中。 它的唯一参数是您希望存储信息的变量。 例如,这是一个简短的脚本,它使用用户想要的名称创建一个文件夹:

#!/bin/bash
read foldername
mkdir foldername

但这是一个没有任何用户界面的脚本。 用户应该如何知道他是否必须输入以及他必须输入什么?

示例脚本

在本例中,我们将使用本教程中学到的所有内容。 自定义格式的消息将显示给用户,并且需要输入。 第一个教程有一个示例,该示例根据调用脚本时传递的参数备份文件。 现在我们将重写它,询问用户他想要备份什么。

首先,我们需要设置并打开文件:

touch ~/bin/filebackup2
chmod +x ~/bin/filebackup2
nano ~/bin/filebackup2

继续重写脚本,使其具有接口:

#!/bin/bash
#Backup script 2.0
#Description: makes a copy of any given file at the backup folder
#Author: Your Name
#Date: 9/19/2013
#Request the backup folder from the user:
echo -e "\e[1m\e[32mFile Backup Utility\n\e[39m\e[0mPlease input your backup folder:"
read BACKUPFOLDER
#The script will make sure the folder exists
mkdir -p $BACKUPFOLDER
#Request files to be backed up:
echo -e "\e[47m\e[30mWhich files do you want backed up?\e[39m\e[49m"
read FILES
cp -a $FILES $BACKUPFOLDER

结论

本教程涵盖了使您能够编写具有适当用户交互的脚本的基本命令,这对于确保每个人都了解脚本的作用以及它请求的数据类型至关重要。 并非所有脚本都应该有用户界面; 我们编写的第一个代码在大多数情况下更快更好。 但即使在命令行中,也只有脚本你应该实现一个“帮助”界面,为此你需要“回声”命令。