Я пытаюсь создать функцию, которая идет в конкретный каталог, и если указан один аргумент, добавьте это в строку каталога. Но независимо от того, что я пытаюсь, я не могу заставить его работать, и bash всегда сообщает, что X не является каталогом, хотя если я скопирую его в новую командную строку, он будет работать оттуда.Что я делаю неправильно в этой функции bash?
function projects()
{
DIR=
if [ -n "$1" ]
then
DIR=$1
fi
echo "~/Projects/Working Branches/$DIR" | sed 's/ /\\&/g' | xargs cd
}
-
$ projects Parametric\ Search\ API
/usr/bin/cd: line 4: cd: ~/Projects/Working Branches/Parametric Search API: No such file or directory
$ projects "Parametric Search API"
/usr/bin/cd: line 4: cd: ~/Projects/Working Branches/Parametric Search API: No such file or directory
Я также попытался модифицировать SED регулярное выражение для s/ /\\\\\\&/g
, который производит то, что, как представляется, правильно спасся строка, но результаты в точно такой же ошибки
$ projects Parametric\ Search\ API
/usr/bin/cd: line 4: cd: ~/Projects/Working\ Branches/Parametric\ Search\ API: No such file or directory
$ projects "Parametric Search API"
/usr/bin/cd: line 4: cd: ~/Projects/Working\ Branches/Parametric\ Search\ API: No such file or directory
Наконец-то я пробовал окружающие $DIR
с каждой комбинацией кавычек, о которых я могу думать, но пока не повезло.
Это принадлежит на StackOverflow. – Chris
Вы должны использовать '$ HOME' вместо' ~ 'в скриптах. Откуда у вас '/ usr/bin/cd'? Он ничего не может сделать полезным. (Ну, есть исключения.) Вам не нужно избегать места в каталоге. Кавычки позаботятся о пространстве. –
@Dennis - строки, начинающиеся с '/ usr/bin/cd', выводятся из bash, сообщая мне, что есть ошибка с моим вызовом' cd' –