read location
接受輸入是
"/home/(10 chars)" or "/(10 chars)" or "(10 chars)"
如何檢查有效的輸入?以及如何從$ location變量中刪除10個字符?
read location
接受輸入是
"/home/(10 chars)" or "/(10 chars)" or "(10 chars)"
如何檢查有效的輸入?以及如何從$ location變量中刪除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
您想要替換運算符。 ${VAR#/home/}
的計算結果爲$VAR
的值爲/home/
(如果存在)。通過比較這些表達式的結果與$VAR
本身,您可以確定您的值是否匹配,以及剝離的版本是什麼。而${#VAR}
給你一個變量值的長度。
你需要的東西是這樣的:
case "$location" in
/home/??????????)
echo $location
;;
/??????????)
echo $location
;;
??????????)
echo $location
;;
*)
d=$(dirname "$location")
b=$(basename "$location")
echo $d/${b:0:10}
esac