Я пытаюсь создать каталог и 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?
Основная ошибка в вашем сценарии заключается в том, что команда [
, эквивалентная команде test
, используется для проверки условий, таких как сравнение строк, наличие файлов и т. Д.
Чтобы проверить состояние выхода процессов, вы должны использовать if
без [
, поэтому ваш сценарий может быть
if mkdir "$appdir" && cd "$appdir"; then
echo "Success"
else
echo "Failed to create and switch directory"
fi
. Это объясняется в Подводные камни Bash: 9. if [ grep foo myfile .
Я предлагаю вам пройти Руководство GrayCat Bash , чтобы понять 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
:)