How do I negate a test with regular expressions in a bash script?

前端 未结 5 456
名媛妹妹
名媛妹妹 2020-12-12 15:20

Using GNU bash (version 4.0.35(1)-release (x86_64-suse-linux-gnu), I would like to negate a test with Regular Expressions. For example, I would like to conditionally add a p

5条回答
  •  一生所求
    2020-12-12 15:59

    You can also put the exclamation mark inside the brackets:

    if [[ ! $PATH =~ $temp ]]
    

    but you should anchor your pattern to reduce false positives:

    temp=/mnt/silo/bin
    pattern="(^|:)${temp}(:|$)"
    if [[ ! "${PATH}" =~ ${pattern} ]]
    

    which looks for a match at the beginning or end with a colon before or after it (or both). I recommend using lowercase or mixed case variable names as a habit to reduce the chance of name collisions with shell variables.

提交回复
热议问题