Как поместить $ в кавычки?

[112312] Я думаю, что проблема в том, что [112781]gawk[112782] не может преобразовать строку [112783]4,3[112784] в число с плавающей точкой. Вы можете исправить это, заменив [112785], [112786] на [112787].[112788]. Для входа @glenn jackman:

1
14.03.2015, 00:32
2 ответа

Вам необходимо процитировать аргумент, когда ваш сценарий вызывается, чтобы показать, что это один аргумент, а не два независимых аргумента. Внутри вашего сценария вы должны использовать «$ @» .

grep -r --color=always "$@" . | nolong

И вызов (например) (например) ...

findstr "hello world"

(но обратите внимание, что рисунок GREP использует только один аргумент, поэтому «$ 1» вместо «$ @ @» ] будет достаточно.)

0
27.01.2020, 23:13

Если вы хотите найти регулярное выражение, которое представляет собой конкатенацию аргументов с пробелами между ними, это будет:

#! /bin/sh -
IFS=' ' # used for "$*"
grep -r --color=always -e "$*" . | nolong

«$ *» объединяет позиционные параметры с первым символом (фактически ] байт , кроме yash ) из $ IFS .

Обратите внимание (поскольку вам кажется, что значение пробела сбивает вас с толку), если вы запустите:

myscript hello world
myscript hello  world
myscript 'hello'   "world"

Пробелы (или кавычки) не передаются в myscript , они просто часть оболочки синтаксис командной строки. В этих трех командных строках оболочки myscript получает те же 3 аргумента: «myscript», «hello» и «world».

Если вы хотите найти любое из регулярных выражений, переданных в качестве аргументов:

#! /bin/sh -
for i do
  set -- "$@" -e "$i"
  shift
done
[ "$#" -gt 0 ] && grep -r --color=always "$@" . | nolong
7
27.01.2020, 23:13

Теги

Похожие вопросы