码:
read location
接受的投入是
"/home/(10 chars)" or "/(10 chars)" or "(10 chars)"
如何检查有效的input? 以及如何从$位置variables削减10个字符?
我会使用像这样的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
你需要这样的东西:
case "$location" in /home/??????????) echo $location ;; /??????????) echo $location ;; ??????????) echo $location ;; *) d=$(dirname "$location") b=$(basename "$location") echo $d/${b:0:10} esac
你想要替代操作符。 ${VAR#/home/}
计算结果是$VAR
的值,如果它存在的话,则会带领/home/
stripped。 通过比较这些表达式的结果到$VAR
本身,您可以确定您的值是否匹配,以及剥离的版本是什么。 和${#VAR}
给你一个变量值的长度。