Я пытаюсь создать каталог и cd
в него:
В ~ / .bashrc:
function abc() {
appname=$1
appdir="$HOME/code/$appname"
if [ mkdir $appdir -a cd $appdir ]; then
echo Success
else
echo Failed to create and switch directory
fi
}
Когда я перезагружаю bashrc ( . ~/.bashrc
), я получаю ошибку:
bash: [: too many arguments
Failed to create and switch directory
Как я могу это исправить? А что [:
в ошибке значит?
Ps. Может ли кто-нибудь направить меня к «не зашифрованному» учебнику по написанию сценариев bash?
if <COMMANDS>; then <COMMANDS>; fi
Ответы:
Основная ошибка в вашем скрипте состоит в том, что
[
команда, эквивалентнаяtest
команде, используется для проверки условий, таких как сравнение строк, существование файлов и так далее.Чтобы проверить состояние выхода процессов, которые вы должны использовать
if
без[
, чтобы ваш сценарий мог бытьЭто объясняется в Bash Pitfalls: 9. if [grep foo myfile .
Я предлагаю вам пройтись по GrayCat Bash Guide, чтобы понять bash.
источник
Прототип может быть:
touch newDirectory.sh
chmod +x newDirectory.sh
./newDirectory.sh anyName
/
Маленькая рекомендация: если вы новичок, не связывайтесь с
.bashrc
:)источник
{
. 2) это никогда не работаетmkdir
. 3) вы не проверялиcd
статус выхода. 4) Не ставьте расширения на скрипты. Особенно,.sh
когда это даже не сценарий. 5) Помещение в скрипт отрицает назначение функции. mywiki.wooledge.org/BashGuide{
было до моего редактирования.'
mkdir "$ {appdir}"'
(посмотрите на