Соединение PPP между Mac System 7 и Debian 10

Проблема в вашем сценарии заключается в том, что ваша awkпрограмма устанавливает первое поле в пустую строку. При этом вы не удаляете его, и поэтому вы получаете пробел (разделитель выходного поля по умолчанию )в качестве первого символа в вашей переменной оболочки path. pushdне может найти каталоги, которые вы ему подаете, из-за пробела в начале имен, и отсюда вы получаете ошибки.

Вместо этого вы можете сделать что-то вроде

sed 's/^[[:blank:]]*[0-9]*[[:blank:]]*//' <"$1" |
while IFS= read -r pathname; do
    pushd "${pathname/#\~\//$HOME/}"
done

sedудаляет все начальные пробелы и цифры в начале строки до того, как readее прочитает.

Как обсуждалось в комментариях :, замена ${pathname/#\~\//$HOME/}заменит тильду только в том случае, если она встречается вместе с /в самом начале $pathname. Для обработки одиночного ~вам, возможно, придется добавить отдельную замену или что-то вроде

case "$pathname" in
    "~")   pathname=$HOME ;;
    "~/"*) pathname=${pathname/#\~/$HOME} ;;
esac
pushd "$pathname"

Если бы входной файл был создан с помощью dirs -l -p, то цикл был бы еще проще:

while IFS= read -r pathname; do
    pushd "$pathname"
done <"$1"
0
23.12.2020, 19:24
1 ответ

Необходимо отключить управление потоком:

# pppd nodetach debug /dev/ttyUSB0 9600 -crtscts
0
18.03.2021, 22:41

Теги

Похожие вопросы