Обратите внимание, что BSD (например, Apple OS/X) используют sed -i '' ...
для редактирования на месте без резервного копирования, а GNU использует sed -i ...
. В большинстве других систем sed
не поддерживает редактирование на месте.
Оба получили это из perl
с опцией -i
. Поэтому, для переносимости, вы можете захотеть вернуться к perl
, который также решит проблемы со специальными символами в переменной:
A=$LINEout B=$LINEnew perl -i -pe 's/\Q$ENV{A}\E/$ENV{B}/g' job.sh
Я столкнулся с этой проблемой, и в моем случае это было связано с тем, что конфигурация по умолчанию на Openwrt имеет сеть сетевого интерфейса LAN, установленную на 192.168.1.X, и если ваша локальная сеть также использует этот диапазон адресов, вы можете Не разговаривайте с маршрутизатором, когда вы подключены к WAN-интерфейсу. Это связано с тем, что коробка Openwrt пытается отправить пакеты обратно на свой интерфейс LAN, когда вы подключены к интерфейсу WAN (также с адресом 192.168.1.X ), так как коробка думает, что интерфейс LAN является лучший для отправки пакетов на 192.168.1.X.
Способ исправить это — изменить сетевой IP-адрес (в LuCI :Сеть -> Интерфейсы -> LAN -> Редактировать -> IPv4-адрес ), назначенный Интерфейс LAN, поэтому он отличается от вашего локального сетевого адреса (, например используйте 192.168.0.X, 10.0.0.X ), а затем вы сможете подключиться к ssh через интерфейс WAN -, если вы выполнили настройку брандмауэра, о которой вы упомянули.