我试图错误捕获用户输入。
- 我需要用户输入文件名。
- 某些用户正在输入完整的网址,并且会杀死其余的脚本。
- 每次用户输入网址时都需要重复此操作。
这是我到目前为止所拥有的。如果用户输入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
答案 0 :(得分:0)
如果您可以检测到用户输入了完整的网址,那么为什么不简单地删除前缀并避免让用户烦恼呢?
http_prefix="http://"
if
[[ $string =~ ^$http_prefix(.*) ]]
then
string=${BASH_REMATCH[1]}
fi
=~
运算符在Bash双重反馈测试中起作用。它匹配扩展的正则表达式,匹配的子表达式(括号内的内容)放在BASH_REMATCH
数组中,索引1处的第一个子表达式。如果匹配失败则测试返回非零值,在这种情况下,字符串保持原样。
请注意,这并不能确保网址有效,只是它不以“http://”开头,所以我想说这是一个玩具示例,而不是生产就绪代码。