Я пытаюсь создать каталог и cd
в него:
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-скриптингу?
Прототипом может быть:
touch newDirectory.sh
chmod +x newDirectory.sh
./newDirectory.sh anyName
/
#!/bin/bash
function abc() {
appname=${1}
appdir="$HOME/Desktop/$appname"
if (( mkdir "${appdir}" )) ; then
cd "${appdir}"
echo "Success"
else
echo "Failed to create and switch directory"
fi
}
abc ${1}
Маленькая рекомендация: если вы новичок, не связывайтесь с .bashrc
:)
Прототипом может быть:
touch newDirectory.sh
chmod +x newDirectory.sh
./newDirectory.sh anyName
/
#!/bin/bash
function abc() {
appname=${1}
appdir="$HOME/Desktop/$appname"
if (( mkdir "${appdir}" )) ; then
cd "${appdir}"
echo "Success"
else
echo "Failed to create and switch directory"
fi
}
abc ${1}
Маленькая рекомендация: если вы новичок, не связывайтесь с .bashrc
:)
Прототипом может быть:
touch newDirectory.sh
chmod +x newDirectory.sh
./newDirectory.sh anyName
/
#!/bin/bash
function abc() {
appname=${1}
appdir="$HOME/Desktop/$appname"
if (( mkdir "${appdir}" )) ; then
cd "${appdir}"
echo "Success"
else
echo "Failed to create and switch directory"
fi
}
abc ${1}
Маленькая рекомендация: если вы новичок, не связывайтесь с .bashrc
:)
Прототипом может быть:
touch newDirectory.sh
chmod +x newDirectory.sh
./newDirectory.sh anyName
/
#!/bin/bash
function abc() {
appname=${1}
appdir="$HOME/Desktop/$appname"
if (( mkdir "${appdir}" )) ; then
cd "${appdir}"
echo "Success"
else
echo "Failed to create and switch directory"
fi
}
abc ${1}
Маленькая рекомендация: если вы новичок, не связывайтесь с .bashrc
:)
Прототипом может быть:
touch newDirectory.sh
chmod +x newDirectory.sh
./newDirectory.sh anyName
/
#!/bin/bash
function abc() {
appname=${1}
appdir="$HOME/Desktop/$appname"
if (( mkdir "${appdir}" )) ; then
cd "${appdir}"
echo "Success"
else
echo "Failed to create and switch directory"
fi
}
abc ${1}
Маленькая рекомендация: если вы новичок, не связывайтесь с .bashrc
:)
Прототипом может быть:
touch newDirectory.sh
chmod +x newDirectory.sh
./newDirectory.sh anyName
/
#!/bin/bash
function abc() {
appname=${1}
appdir="$HOME/Desktop/$appname"
if (( mkdir "${appdir}" )) ; then
cd "${appdir}"
echo "Success"
else
echo "Failed to create and switch directory"
fi
}
abc ${1}
Маленькая рекомендация: если вы новичок, не связывайтесь с .bashrc
:)
Прототипом может быть:
touch newDirectory.sh
chmod +x newDirectory.sh
./newDirectory.sh anyName
/
#!/bin/bash
function abc() {
appname=${1}
appdir="$HOME/Desktop/$appname"
if (( mkdir "${appdir}" )) ; then
cd "${appdir}"
echo "Success"
else
echo "Failed to create and switch directory"
fi
}
abc ${1}
Маленькая рекомендация: если вы новичок, не связывайтесь с .bashrc
:)
Прототипом может быть:
touch newDirectory.sh
chmod +x newDirectory.sh
./newDirectory.sh anyName
/
#!/bin/bash
function abc() {
appname=${1}
appdir="$HOME/Desktop/$appname"
if (( mkdir "${appdir}" )) ; then
cd "${appdir}"
echo "Success"
else
echo "Failed to create and switch directory"
fi
}
abc ${1}
Маленькая рекомендация: если вы новичок, не связывайтесь с .bashrc
:)
{
. 2) он никогда не запускается mkdir
. 3) вы не проверяли статус выхода cd
. 4) Не ставьте расширения на скрипты. Особенно не .sh
, когда это даже не sh-скрипт. 5) Помещение в скрипт отрицает назначение функции. mywiki.wooledge.org/BashGuide
– geirha
2 May 2011 в 12:38
'
mkdir & quot; $ {appdir} & quot; '
(посмотрите на обратные галочки)
– studentz
2 May 2011 в 19:29
Основная ошибка в вашем сценарии заключается в том, что команда [
, эквивалентная команде test
, используется для проверки условий, таких как сравнение строк, наличие файлов и т. д.
проверьте состояние завершения процессов, которые вы должны использовать if
без [
, чтобы ваш сценарий мог быть
if mkdir "$appdir" && cd "$appdir"; then
echo "Success"
else
echo "Failed to create and switch directory"
fi
Это объясняется в Bash Pitfalls: 9. if [grep foo myfile .
Я предлагаю вам пройти GrayCat Bash Guide , чтобы понять bash.
Прототипом может быть:
Создать файл на рабочем столе: touch newDirectory.sh Сделать исполняемый файл: chmod +x newDirectory.sh Чтобы вызвать скрипт с терминала на рабочем столе: ./newDirectory.sh anyName/
#!/bin/bash
function abc() {
appname=${1}
appdir="$HOME/Desktop/$appname"
if (( mkdir "${appdir}" )) ; then
cd "${appdir}"
echo "Success"
else
echo "Failed to create and switch directory"
fi
}
abc ${1}
Маленькая рекомендация: если вы новичок, не связывайтесь с .bashrc:)
Прототипом может быть:
touch newDirectory.sh
chmod +x newDirectory.sh
./newDirectory.sh anyName
/
#!/bin/bash
function abc() {
appname=${1}
appdir="$HOME/Desktop/$appname"
if (( mkdir "${appdir}" )) ; then
cd "${appdir}"
echo "Success"
else
echo "Failed to create and switch directory"
fi
}
abc ${1}
Маленькая рекомендация: если вы новичок, не связывайтесь с .bashrc
:)