Linux 如何在bash中检查有效的字符串输入?
代码: 接受的输入是Linux 如何在bash中检查有效的字符串输入?,linux,string,bash,Linux,String,Bash,代码: 接受的输入是 read location 如何检查有效输入?如何从$location变量中剪切10个字符?您需要替换运算符${VAR#/home/}计算值为$VAR的值,如果存在前导的/home/,则前导的/home/被去除。通过将这些表达式的结果与$VAR本身进行比较,您可以确定您的值是否匹配,以及剥离版本是什么。而${#VAR}提供变量值的长度。需要替换运算符${VAR#/home/}计算值为$VAR的值,如果存在前导的/home/,则前导的/home/被去除。通过将这些表达式的结
read location
如何检查有效输入?如何从$location变量中剪切10个字符?您需要替换运算符
${VAR#/home/}
计算值为$VAR
的值,如果存在前导的/home/
,则前导的/home/
被去除。通过将这些表达式的结果与$VAR
本身进行比较,您可以确定您的值是否匹配,以及剥离版本是什么。而${#VAR}
提供变量值的长度。需要替换运算符${VAR#/home/}
计算值为$VAR
的值,如果存在前导的/home/
,则前导的/home/
被去除。通过将这些表达式的结果与$VAR
本身进行比较,您可以确定您的值是否匹配,以及剥离版本是什么。${#VAR}
给出变量值的长度。我会使用如下的grep表达式:
"/home/(10 chars)" or "/(10 chars)" or "(10 chars)"
这将匹配以下情况之一的行(由-x引起),而不打印匹配行(由-q引起)
- 10个字符
- 带前导的10个字符/
- 前接“/home/”的10个字符
echo $location | grep -xq "\w\{10\}\|/\w\{10\}\|/home/\w\{10\}"
我会使用这样的grep表达式:
"/home/(10 chars)" or "/(10 chars)" or "(10 chars)"
这将匹配以下情况之一的行(由-x引起),而不打印匹配行(由-q引起)
- 10个字符
- 带前导的10个字符/
- 前接“/home/”的10个字符
echo $location | grep -xq "\w\{10\}\|/\w\{10\}\|/home/\w\{10\}"
你需要这样的东西:
if echo "$location" | grep -xq "\w\{10\}\|/\w\{10\}\|/home/\w\{10\}"; then
# location valid
else
# location not valid
fi
你需要这样的东西:
if echo "$location" | grep -xq "\w\{10\}\|/\w\{10\}\|/home/\w\{10\}"; then
# location valid
else
# location not valid
fi