代码:
read location
接受的输入是
"/home/(10 chars)" or "/(10 chars)" or "(10 chars)"
如何检查有效输入?以及如何从$ location变量中删除10个字符?
答案 0 :(得分:3)
你需要这样的东西:
case "$location" in
/home/??????????)
echo $location
;;
/??????????)
echo $location
;;
??????????)
echo $location
;;
*)
d=$(dirname "$location")
b=$(basename "$location")
echo $d/${b:0:10}
esac
答案 1 :(得分:2)
您想要替换运算符。 ${VAR#/home/}
评估$VAR
的值为/home/
被剥离的内容(如果存在)。通过将这些表达式的结果与$VAR
本身进行比较,您可以确定您的值是否匹配,以及剥离的版本是什么。 ${#VAR}
为您提供变量值的长度。
答案 2 :(得分:2)
我会像这样使用grep表达式:
echo $location | grep -xq "\w\{10\}\|/\w\{10\}\|/home/\w\{10\}"
这匹配的行恰好是以下情况之一(由-x引起)并且不打印匹配行(由-q引起)
要在脚本中使用它,只需将其放在if语句中,如下所示:
if echo "$location" | grep -xq "\w\{10\}\|/\w\{10\}\|/home/\w\{10\}"; then
# location valid
else
# location not valid
fi