2) echo "input new directory"
read
tmp=$(echo $REPLY | sed 's/^[-]/\.\/-/')
cd -- "$tmp" 2>>errors
echo ok;pwd
;;
Реализовывает переход в директории по абсолютному пути, начинающиеся с "-", но вот стоит появиться каталогу с именем "*" (только звездочка) и всë. Как бы не ректальным способом это реализовать?
2) echo "input new directory"
read
tmp=$(echo $REPLY | sed 's/^[-]/\.\/-/')
cd -- "$tmp" 2>>errors
echo ok;pwd
;;
Реализовывает переход в директории по абсолютному пути, начинающиеся с "-", но вот стоит появиться каталогу с именем "*" (только звездочка) и всë. Как бы не ректальным способом это реализовать?
А также, стоит рассмотреть вариант отключения pathname expansion совсем
IFS="$newline"
for s in $(find); do
echo "Found '$s'"
done
В этом примере вы не можете взять $(find) в кавычки, тк тогда отключится word splitting, и весь вывод find будет восприниматься как один файл, с другой стороны, если вы не возьмете его в кавычки, то к результатам будет применен pathname expansion, что совсем не нужно.
1. Я так и не понял на фига оно надо. И без замены всё прекрасно переходит.
2. Можно воспользоваться ${REPLY/#-/.\/} вместо непонятных переменных и sed'ов