Использование IFS вместо пробелов в bash - PullRequest
0 голосов
/ 02 июня 2018

Есть довольно неприятное выражение, которое хочет повторить, используя bash.

Выражение:

'one two -- 

Примечание: После * 1008 есть пробел*.

Итак, у меня есть:

IFS=
echo 'one$IFStwoIFS--$IFS

Но результат:

one$IFStwo$IFS--$IFS

1 Ответ

0 голосов
/ 02 июня 2018

У вас мало проблем с вашим подходом:

  1. Внутри одинарных кавычек переменные не раскрываются в оболочке
  2. В строке one$IFStwo$IFS--$IFS первый экземпляр $IFS не будетрасширен, поскольку у вас есть строка two рядом с $IFS, поэтому он пытается развернуть несуществующую переменную $IFStwo.
  3. Значение по умолчанию $IFS равно $' \t\n'

Вы можете использовать:

echo "one${IFS}two$IFS--$IFS"

, который расширится до (cat -A output):

one ^I$
two ^I$
-- ^I$
...