Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何在bash中检查有效的字符串输入?_Linux_String_Bash - Fatal编程技术网

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个字符
要在脚本中使用它,只需将其放入if语句中,如下所示:

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个字符
要在脚本中使用它,只需将其放入if语句中,如下所示:

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