2011-11-01 71 views

回答

2

我會用一個grep的表達像這樣:

echo $location | grep -xq "\w\{10\}\|/\w\{10\}\|/home/\w\{10\}" 

這個匹配,其是完全的下列情況之一(引起-x)線和不打印的匹配線(所造成的-q)

  • 10個字符
  • 10個字符與前面有一個超前/
  • 10字符 '/家/'

在腳本中使用它,只是砸在if語句,像這樣:

if echo "$location" | grep -xq "\w\{10\}\|/\w\{10\}\|/home/\w\{10\}"; then 
    # location valid 
else 
    # location not valid 
fi 
2

您想要替換運算符。 ${VAR#/home/}的計算結果爲$VAR的值爲/home/(如果存在)。通過比較這些表達式的結果與$VAR本身,您可以確定您的值是否匹配,以及剝離的版本是什麼。而${#VAR}給你一個變量值的長度。

3

你需要的東西是這樣的:

case "$location" in 
    /home/??????????) 
     echo $location 
     ;; 

    /??????????) 
     echo $location 
     ;; 

    ??????????) 
     echo $location 
     ;; 

    *) 
     d=$(dirname "$location") 
     b=$(basename "$location") 
     echo $d/${b:0:10} 
esac