what is +$ in this command: [[ $1 =~ ^[0-9]+$ ]]
Asked
Active
Viewed 48 times
-4
-
Sure that's not `[[ ... ]]`? – Shawn Apr 20 '20 at 03:22
-
sorry I forget to put that.. Could you please tell me why +$ should be added? – Prajun Lungeli Apr 20 '20 at 03:24
2 Answers
2
The +
applies to the [0-9]
and not the $
.
The intended command was:
[[ $1 =~ ^[0-9]+$ ]]
It checks if $1
only contains digits, e.g. 123
or 9
(but not 123f
or foo
or empty string).
It breaks down as:
[[
, start of a Bash extended test command$1
, the first parameter=~
, the Bash extended test command regex match operator^[0-9]+$
, the regex to match against:^
, anchor matching the start of the line[0-9]+
, one or more digits[0-9]
, a digit+
, one or more of the preceding atom
$
, anchor matching the end of the line
]]
to terminate the test command

that other guy
- 116,971
- 11
- 170
- 194
1
+
in regexp matches for "1 or more times the preceding pattern" and $
signifies the end of string anchor.
^
is beginning of string anchor (the natural complement to $
), and [0-9]
matches any single digit (in the range of 0 to 9).

JGof
- 139
- 5