linux来创建shell程序,Linux Shell——创建交互式脚本

5f839ba52312

Linux Shell

使用 echo命令的选项

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

5f839ba52312

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提供参数时设置,最后打印出来。

执行结果为:

5f839ba52312

hello3.sh

优化 read 提示的脚本

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

read -p "Enter your name: " name

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

下面是具体使用的语法:

5f839ba52312

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。

5f839ba52312

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值