Я хочу написать скрипт, который берет имя текущей папки и добавляет к нему постфикс _default в конце.
Мой сценарий пока выглядит так:
#!/usr/bin/env bash
baseDir=pwd | awk -F/ '{print $NF}'
networkName=$(baseDir)$('_default')
echo $networkName
При запуске я получаю следующие ошибки:
codebrews@mymachine:/docker-local$ ./test.sh
./test.sh: line 3: baseDir: command not found
./test.sh: line 3: _default: command not found
Я уверен, что я что-то простое путаю, но я этого не вижу. Спасибо.
ПРАВКА 1
Я также попробовал это:
#!/usr/bin/env bash
baseDir=pwd | awk -F/ '{print $NF}'
networkName=$($baseDir)_default
echo $networkName
Но это просто возвращает
_по умолчанию
Теперь я вижу, что проблема в basedDir пуста. Когда я запускаю "pwd | awk -F/ '{print $NF}'" в командной строке, это работает. Но это явно не работает в этом файле скрипта.
решение1
baseDir=pwd | awk -F/ '{print $NF}'
Эта команда присвоит переменную baseDir
строке pwd
, а затем передаст вывод этого присваивания (т.е. ничего) в awk
, что ничего не сделает.
networkName=$(baseDir)$('_default')
Эта команда попытается присвоить переменную networkName
выводу команды baseDir
(который не существует, отсюда и первая ошибка), объединенную с выводом команды '_default')
(который не существует, отсюда и вторая ошибка).
echo $networkName
Поскольку предыдущая команда не сработала, эта команда не выведет ничего, кроме завершающего символа новой строки.
Я думаю, вы ищете вот это:
#!/usr/bin/env bash
baseDir="$(pwd | awk -F/ '{print $NF}')"
networkName="${baseDir}_default"
echo "$networkName"