Я пытаюсь написать функцию bash в моем .bashrc, которая копирует несколько файлов в каталог и вводит его, проблема в том, что он копирует файлы, но не входит в каталог, и говорит: «пропущенный каталог» cpcd () if [ -d "${!#}" ]
then
cp "$@" "${!#}" && cd "${!#}" && ls
else
print "last argument is not a directory or does not exist"
fi
Когда вы делаете это:
cp "$@" "${!#}"
это приводит к тому, что последний аргумент (имя каталога) повторяется.
Итак, я думаю, что вы хотите, вероятно, это вместо этого (просто удалите "${!#}"
):
cp "$@"
Другая проблема в том, что вы говорите, что он не входит в каталог. Сценарий, который вы просто выполняете нормально, не изменит ваш текущий рабочий каталог; если вы хотите, чтобы это произошло, вам нужно вместо этого использовать сценарий. Таким образом, вместо того, чтобы запускать его так:
./yourscript.sh [arguments]
, вы можете получить его, например, так:
. yourscript.sh [arguments]