$ (...)
(также известный как «Подстановка команд») фиксирует вывод команды ...
. Присвоение значения переменной не дает результата, поэтому захватывать нечего. В случае №2 echo
производит вывод.
getStart () {
local l=Hallo
echo $l
}
v=$(getStart)
echo $v
Чтобы ответить на ваше обновление: функция выводит Hallo
. Этот вывод фиксируется с помощью подстановки команд, потому что это то, что делает подстановка команд, поэтому до v = $ (getStart)
сценарий не производит вывода. Затем строка echo $ v
выводит Hallo
.
Используйте
grep '/^ABC$/' file.in
или
grep -x 'ABC' file.in
, если вы хотите, чтобы совпадение происходило в отдельной строке.
Используйте
grep -w 'ABC' file.in
соответствует слову ABC
(, т. е. строке ABC
, окруженной буквенно-цифровыми символами, отличными от -, или началу/концу строки ). Это будет соответствовать строке, содержащей, например. 123 ABC 123
.
Кроме того, используйте -F
, если ABC
не регулярное выражение, а статическая строка. И используйте -o
, если вы хотите, чтобы grep
возвращал только совпадающие строки, а не всю строку, содержащую совпадение.
Если вам просто нужно вернуть два значения:
grep -ow ABC File1
-o, --only-matching Print only the matched (non-empty) parts of a matching line, with each such part on a separate output line.
-w, --word-regexp Select only those lines containing matches that form whole words. The test is that the matching substring must either be at the beginning of the line, or preceded by a non-word constituent character. Similarly, it must be either at the end of the line or followed by a non-word constituent character. Word-constituent characters are letters, digits, and the underscore.