错误陷阱用户输入 - Bash脚本循环

时间:2017-04-06 01:49:36

标签: bash loops error-handling

我试图错误捕获用户输入。

- 我需要用户输入文件名。

- 某些用户正在输入完整的网址,并且会杀死其余的脚本。

  • 因此,如果用户输入http://我想要脚本给出错误消息并让他们只输入文件名。

- 每次用户输入网址时都需要重复此操作。

  • 如果他们输入文件名,那么脚本的其余部分就会执行。

这是我到目前为止所拥有的。如果用户输入url一旦工作,但如果他输入错误两次,它将执行脚本的其余部分

#!/bin/bash
read -p "Enter File : " string

if [[ $string -ne *”http://“* ]];
then
s3cmd get s3://backup/domain.com/$string



elif [[ $string -ne *"http://"* ]];
echo “You entered the full URL, enter on the file name“
read -p "Enter File : " string

then

s3cmd get s3://backup/domain.com/$string

else
    echo "rest of script"
fi

1 个答案:

答案 0 :(得分:0)

如果您可以检测到用户输入了完整的网址,那么为什么不简单地删除前缀并避免让用户烦恼呢?

http_prefix="http://"
if
  [[ $string =~ ^$http_prefix(.*) ]]
then
  string=${BASH_REMATCH[1]}
fi

=~运算符在Bash双重反馈测试中起作用。它匹配扩展的正则表达式,匹配的子表达式(括号内的内容)放在BASH_REMATCH数组中,索引1处的第一个子表达式。如果匹配失败则测试返回非零值,在这种情况下,字符串保持原样。

请注意,这并不能确保网址有效,只是它不以“http://”开头,所以我想说这是一个玩具示例,而不是生产就绪代码。