我在tcsh中有一個shell腳本,我傳遞了一個參數,其長度可以變化。參數的可能值是字母-c,s,i,q,a。也是這些字母的組合。 (例如:cs,si,ca,iq,qa,csq,acs,csia等)。這些字母的順序無關緊要。 我的問題是檢查參數除了這些5以外的任何字符,並且如果任何有效字符出現超過一次(零時間是好的)。該腳本應檢查這兩個條件並拋出錯誤。是否有任何正則表達式可用於if語句用於此目的?tcsh shell腳本中的正則表達式
回答
這將是最容易做兩個正則表達式檢查,一個用於所有字母的有效性,另一個用於查找重複的字母。
看看這個代碼:
#!/bin/tcsh
echo $1 | grep -q -e "[^csqai]"
if ($? != 0) then
echo "Valid characters"
else
echo "Invalid characters"
endif
echo $1 | grep -q -e "\([csqai]\).*\1"
if ($? != 0) then
echo "No repeated valid characters"
else
echo "Repeated valid characters"
endif
第一個正則表達式查找這是無效的所有字符和第二查找任何重複的字符
我不知道該怎麼做這些檢查tcsh
,所以我用grep
做了他們。 -q
標誌使grep
無聲。如果找不到匹配項,$?
爲0。
當我嘗試,發佈的代碼不捕獲,如果參數是類似cqm的地方,非法角色來了經過一個或多個合法人物。 – user2065523 2013-02-13 06:55:32
好點,現在應該修復... – 2013-02-13 23:11:02
以下是您可以使用的示例代碼片段。使用「X」是強制比較爲字符串。
#!/bin/csh -f
if ($#argv > 0) then
echo arg is $1
if (X$1 =~ X-*) then
echo "we have an argument"
if ("X$1" =~ X-c[aeiou]) then
echo I found -c followed by vowel
else if ("X$1" =~ "X-c") then
echo I found -c alone
else
echo I found a -c but not a valid combo
endif
else
echo I found an unknown argument: $1
endif
endif
csh沒有正則表達式 – 2013-05-16 16:54:40
- 1. Java中的正則表達式在Shell腳本中的正則表達式
- 2. 正則表達式Unix shell腳本
- 3. awk中bash shell腳本中的正則表達式
- 4. 使用正則表達式解析shell腳本中的JSON
- 5. shell腳本中的正則表達式使用
- 6. shell腳本中的正則表達式匹配
- 7. [Java腳本]正則表達式表達
- 8. tcl腳本中的正則表達式
- 9. Java腳本中的正則表達式
- 10. 在bourne shell腳本中編寫正則表達式
- 11. 在shell腳本中構建查找正則表達式參數
- 12. 在shell腳本中使正則表達式看起來不錯
- 13. 使用shell腳本的OpenLDAP正則表達式搜索
- 14. 在Bash shell中的正則表達式
- 15. 使用shell腳本進行正則表達式匹配
- 16. 使用正則表達式重命名shell腳本
- 17. 正則表達式提取css註釋與shell腳本
- 18. 通過bash shell腳本傳遞動態正則表達式
- 19. Shell腳本執行正則表達式匹配/替換
- 20. shell腳本正則表達式幫助需要
- 21. 使用正則表達式和Shell腳本
- 22. 關於腳本的正則表達式
- 23. Shell腳本中的布爾表達式
- 24. shell腳本中'hr min sec'時間格式的正則表達式?
- 25. Javascript路由正則表達式腳本
- 26. Bash腳本正則表達式
- 27. 正則表達式在bash腳本
- 28. Java腳本正則表達式分組
- 29. 正則表達式 - 殼牌腳本
- 30. SSIS正則表達式組件腳本
請張貼您的代碼。 – 2013-02-12 16:41:16
[你有什麼嘗試?](http://whathaveyoutried.com/) – ruakh 2013-02-12 16:55:06
我把腳本稱爲「myscript -csq」。我嘗試了下面的代碼。如果(「$ 1」=〜[csqai])回聲「有效參數」其他回聲「無效」endif但是,如果兩個c都存在,此代碼不會拋出錯誤。 – user2065523 2013-02-12 17:00:36