Вот код awk (длинный и сложный, но у меня работает)
echo |awk -v a="$string1" -v b="$string2" '{split(a,a1,""); n=split(b,b1,"");a1[2]=b1[3];for (i=1;i<=n;i++) {printf a1[i]}}'
Шаблон расширяется только до существующих имен, а шаблон te*/test
не соответствует ни одному существующему имени. Обратите внимание, что te*/test
является одним полным шаблоном и что часть te*
не сопоставляется отдельно от /test
.
Поскольку шаблон не соответствует (и поскольку параметры оболочки nullglob
и failglob
не установлены ), он остается нераскрытым и передается mkdir
, который жалуется, что не может создать подкаталог test
в каталоге te*
.
Команда cd te*
выполнена успешно, поскольку шаблон te*
соответствует имени существующего каталога test
. Если бы было больше имен, соответствующих te*
, вы могли бы получить сообщение об ошибке от cd
.
Вы можете устранять проблемы такого рода с помощью соответствующих переключателей. Первый из них -v
,который будет производить больше продукции, с которой вы можете ознакомиться. Другой — -p
, который создаст родительские каталоги, если их нет. Игра с ними обоими должна дать вам хороший урок. Например.:
mkdir -pv _dirname_