Linux Shell——创建交互式脚本

Linux Shell——创建交互式脚本_第1张图片
Linux Shell

使用 echo命令的选项

关于各种命令的使用,可以使用man 命令来查看命令的详细用法介绍。例如,我想看下 echo 的用法和各种选项。可以执行 man echo。执行结果如下:

Linux Shell——创建交互式脚本_第2张图片
echo

如果单独执行 echo 命令,就会打印出一个空白行。
默认情况下,echo 都会换行,如果不想换行的话,可以使用下面两种方式的一种。

echo -n "Which directory do you want to use? "
echo -e "Which directory do you want to use? \c"

使用 read 命令

如果我们需要读入用户输入的参数时,可以使用 read 命令,当然还可以从文件系统等读入信息。
我们建立一个新的脚本文件 hello3.sh。

#!/bin/bash
echo -n "Hello I  $(basename $0) may I ask your name: "
read
echo "Hello $REPLY"
exit 0

执行此脚本时,首先提示需要输入,然后输入的内容,REPLY当没有给read提供参数时设置,最后打印出来。

执行结果为:

hello3.sh

优化 read 提示的脚本

在前面的例子中,我们使用了echo -n的方式来阻止信息换行,其实 read 命令也带了一个选项来实现相同的功能:

read -p "Enter your name: " name

上面的脚本中,我们定义了一个变量name用来保存输入的内容,如果不定义变量的话,输入的内容会保存在REPLY中。
下面是具体使用的语法:

Linux Shell——创建交互式脚本_第3张图片
read -p

hello3.sh的脚本可以改成如下:

#!/bin/bash
read -p "May I ask your name: " name
echo "Hello $name"
exit 0

限制输入内容的个数

我们还可以使用 read命令的-n 选项,此选项后面需要接一个数字,可以限制输入内容的个数。

#!/bin/bash
read -p "May I ask your name: " name
echo "Hello $name"
read -n1 -p "Press any key to exit"
echo
exit 0

控制输入内容的可见性

目前,我们输入的内容都是可见的,但有些敏感的数据,如密码,信用卡号等信息,输入时并不想可见。那么可以使用read -s

read -s

这时再输入时,就有一个钥匙的标识,而且输入时不可见。

实例演示

现在有一个小程序,要求把指定后缀的文件备份到指定的目录下,代码如下:

#!/bin/bash
# Script to prompt to back up files and location
# The files will be search on from the user's home
# directory and can only be backed up to a directory within $HOME

read -p "Which file types do you want to backup " file_suffix
read -p "Which directory do you want to backup to " dir_name

# The next lines creates the directory if it does not exist
test -d $HOME/$dir_name || mkdir -m 700 $HOME/$dir_name

# The find command will copy files the match the
# search criteria ie .sh . The -path, -prune and -o
# options are to exclude the back directory from the
# backup.
find $HOME -path $HOME/$dir_name -prune -o \
 -name "*$file_suffix" -exec cp {} $HOME/$dir_name/ \;

exit 0

你可能感兴趣的:(Linux Shell——创建交互式脚本)