String
將變數與大小寫字母進行比較
所以我想在 tcsh 腳本中驗證使用者的響應,這就是我目前所擁有的
set var1="temp" while($var1 != [yY] && $var1 != [Yy][Ee][Ss] && $var1 != [Nn] && $var1 != [Nn][Oo]) echo "Do you want to create a backup directory ? :" set response=&< if ($response == [yY] || $respose == [Yy][Ee][Ss]) then mkdir backup echo "Backupd directory created \n" else if($response == [nN] || $response == [Nn][Oo]) then echo "No backup directory is created \n" else echo "Please enter a valid respose ! \n" var1=$response endif end
我基本上希望使用者輸入 Y、y、Yes、N、n、No,當然我也允許在 yes 和 now 中組合小寫和大寫。
但是當我執行腳本時,它給了我一個錯誤說
[yY]: No match.
所以我猜在比較 $var1 和
$$ Yy $$. 基本上我正在驗證使用者輸入。 和 cai
var1
像我一樣重新分配var1=$response
,還是我必須再次使用 set >
您可能的意思是
!~
“不匹配正則表達式”,而不是!=
“不等於”。對於
$var =~ regexp
and$var !~ regexp
,右邊的模式不應該被引用。對於==
and!=
,您可以引用右邊的部分(事實上我鼓勵這樣做)。由於
!=
需要一個字元串,“”[yY]
沒有被解析為正則表達式。相反,shell 將其擴展為“名稱為y
or的任何文件Y
。由於您沒有文件,因此 shell 抱怨。順便說一句,這種事情就是為什麼我不想在 tcsh 中編寫腳本,即使我將它用作我的互動式 shell。