При разборе командной строки shell использует понятие разделитель (delimiter).
Разделитель - это символ, разделяющий слова; таким образом, командная строка - это последовательность слов (которые имеют значение) и разделителей (которые значения не имеют).
Для shell разделителями являются символ пробела, символ табуляции и символ перевода строки (который все-таки может попасть между словами способом, описанным в лекциях 6 и 7). Количество разделителей между двумя соседними словами значения не имеет.
Первое слово в тройке передается команде как первый параметр, второе - как второй и т. д. Для того чтобы разделитель попал внутрь слова (и получившаяся строка с разделителем передалась как один параметр), всю нужную подстроку надо окружить одинарными или двойными кавычками:
[ivan@localhost ivan]$ echo One Two Three
One Two Three
[ivan@localhost ivan]$ echo One "Two Three"
One Two Three
[ivan@localhost ivan]$ echo 'One
>
> Ой. И что дальше?
> А, кавычки забыл!'
One
Ой. И что дальше?
А, кавычки забыл!
[ivan@localhost ivan]$
В первом случае команде echo
было передано три параметра - One
, Two
и Three
. Она их и вывела, разделяя пробелом. Во втором случае параметров было два: One
и Two Three
. В результате эти два параметра были также выведены через пробел. В третьем случае параметр был всего один - от открывающего апострофа 'One' до закрывающего ...забыл!'. Все время ввода bash услужливо выдавал Ивану подсказку >
- в знак того, что набор командной строки продолжается, но в режиме ввода содержимого кавычек.
Команды и утилиты | Тесты по теме: "Терминал и командная строка" |