2017-02-07 6 views
-1

Я новичок в консоли и пытаюсь написать функцию, которая создаст каталог с именем каталога, являющимся аргументом функции. Это моя функция до сих пор:Bash Function Space in single Аргумент

clidir() { 
    mkdir $1 
} 

Когда я ввожу аргумент пробелом, он создает два каталога. Я пробовал:

clidir "New Folder" 

и

clidir New\ Folder 

и оба они создают несколько каталогов.

Любая помощь приветствуется.

+0

Вы должны почти * всегда * указывать переменные в оболочке. – Barmar

ответ

2

Дважды котировка ваш аргумент, чтобы избежать софистика оболочкой

clidir() { 
    mkdir "$1" 
} 

Отрывок из man bash страницы,

Слово Нарезка

Оболочка просматривает результаты расширения параметров, подстановка команд и арифметическое расширение , которые не встречались в двойных кавычках для word s plitting. Оболочка рассматривает каждый символ IFS как разделитель и разбивает результаты других расширений на слова, используя эти символы в качестве терминаторов полей. Если IFS не задано, или его значение в точности, значение по умолчанию, а затем последовательности из, и в начале и конце результатов предыдущих расширений игнорируются, и любая последовательность символов IFS не в начале и конце служит для разграничения слова.