Символическая ссылка — это просто помощник для поиска фактического файла, который на самом деле является помощником для поиска фактического индексного дескриптора. После этого то, что вы открываете, определяется самим инодом. В случае /dev/pts/1
вы фактически открываете символьное устройство со старшим номером устройства 136 и младшим 1.
С этого момента имена файлов, наличие файлов или символические ссылки не имеют значения, точно так же, как вы можете получить доступ к файлу, который был удален, если вы открыли его до того, как он был удален.
Всего несколько ошибок в вашем файле сценария оболочки. Я исправил это как следующий код (вы можете использовать bash -x для отладки и дополнительной настройки при необходимости)
bash -x test.sh
Примечания:Для запуска одного и того же кода в Windows и MacOS я думаю, вам следует использовать Linux WSL в Windows или заменить unzip на 7z в следующем код:
#! /bin/bash
#
# save this file as test.sh
#
mkdir -p "DESTDIR"
for ZIPFILE in *.zip ; do
NAME="${ZIPFILE%.*}"
mkdir -p "DESTDIR/$NAME"
unzip -j $ZIPFILE reports/report.json -d "DESTDIR/$NAME/"
mv "DESTDIR/$NAME/report.json" "DESTDIR/$NAME.json"
done