Есть ли какой-нибудь код sh, который не является синтаксически допустимым кодом bash?

«Порт загрузки» не имеет значения. Похоже, у вас было нестабильное соединение через Wi-Fi, и вы решили это, подключившись через Ethernet.

Поскольку проблема вернулась, убедитесь, что ваш Wi-Fi отключен. Ваш компьютер мог использовать соединение Ethernet, но теперь, возможно, снова использует Wi-Fi, даже если кабель подключен.

Проверьте в этом порядке, что вы можете:

  • проверить связь с адресом обратной связи 127.0.0.1

  • проверить связь с вашим собственным IP-адресом

  • проверить связь с машиной в той же локальной сети

  • проверить связь с IP-адресом вашего шлюза

  • ​​пинговать машину в Интернет. Что касается последнего пункта, попробуйте выполнить эхо-запрос внешнего IP-адреса (например, 198.252.206.16) и его FQDN (например, unix.stackexchange.com); если вы можете пропинговать IP, но не полное доменное имя, тогда ваши настройки DNS в /etc/resolv.conf неверны, и вам нужно добавить в верхнюю часть файла правильный сервер имен (8.8.8.8 DNS гугла и будет работать нормально).

Это должно помочь вам понять, в чем проблема.

31
11.05.2018, 13:07
2 ответа

Aquí hay un código que hace algo diferente en POSIX sh y Bash:

hello &> world

Si eso es "inválido" para usted, no lo sé.

En Bash, redirige tanto la salida estándar como el error estándar de helloal archivo world. En POSIX sh, ejecuta helloen segundo plano y luego realiza una redirección vacía a world, truncándolo (, es decir, se trata como& >).

Hay muchos otros casos en los que las extensiones de Bash funcionarán cuando se ejecuten bajo bash, y tendrían diferentes efectos en un POSIX puro sh. Por ejemplo, la expansión de llaves es otra, y también funciona igual en el modo POSIX de Bash y no.


En cuanto a los errores de sintaxis estática, Bash tiene palabras reservadas (como [[ytime)no especificadas por POSIX, de modo que [[ xes un código de shell POSIX válido pero un error de sintaxis de Bash y un historial de varios errores de incompatibilidad POSIX que pueden generar errores de sintaxis, como el de esta pregunta:

x=$(cat <<'EOF'
`
EOF
)
bash: line 2: unexpected EOF while looking for matching ``'
bash: line 5: syntax error: unexpected end of file

Errores de sintaxis --solo es una definición bastante peligrosa de "no válido" para cualquier circunstancia en la que importe, pero ahí está.

48
27.01.2020, 19:37

Un breve ejemplo:

time()(:)

timeen Bash es una palabra reservada y se comporta de manera diferente al programa time. Es muy probable que rompa algunos scripts prácticos al intentar analizar el resultado de timeusando bash. Pero técnicamente no es un error de sintaxis. Redefinir timecomo una función sería raro pero causa un error de sintaxis como especifica esta pregunta.

Un ejemplo más breve:

a():

Válido en dash, pero no compatible con POSIX.

17
27.01.2020, 19:37

Теги

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