Я человек далёкий от консоли и программирования настолько, насколько это возможно. Но жизнь заставляет. Решил немного поизучать bash и навелосипедил скрипт, но мозгов не хватает. Зарание извиняюсь за этот ужас и бред:
#!/bin/sh
i=1
f="${1}новая папка"
while [ "-d "$f \($i\)"" = "true" ]
do
touch "$f \($i\)"
i=$[$i+1]
done
По идеи код должен принимать первым параметром любой путь, проверять в нём наличие директории «путь/новая папка (1)». Если она есть, проверить «путь/новая папка (2)» и т.д. И если её нет создать её. Но код не работает:
kot@kot-MS-7930:~$ bash -x /home/kot/bin/installin/newfolder.sh /home/kot/bin/
+ i=1
+ f='/home/kot/bin/новая папка'
+ '[' '-d /home/kot/bin/новая' папка '(1)' = true ']'
/home/kot/bin/installin/newfolder.sh: строка 5: [: слишком много аргументов
Видимо я как-то неправильно расставил кавычки. Также я ещё не придумал как начинать проверку не с «нова папка (1)», а с «новая папка». Вроде должно быть не сложно, но все идеи кончились. И ещё вопрос по экранированию символов
здесь и
здесь в примерах показано, что внутри echo экранирование для $ действует наоборот. А
здесь в примере:
\$
придает знаку доллара непосредственное значение (если перед именем переменной стоит \$, то обращения к ее значению не последует)
echo «\$variable01» # $variable01
echo «Стоимость книги \$7.98.» # Стоимость книги $7.98.
показано, что экранирование для $ действует как и везде прямо. Весь мозг сломал…
bash