Массив Bash содержит ложные срабатывания

У вас есть (по крайней мере) несколько вариантов

  1. Запустите DHCP-сервер на вашем Pi. Это назначит адреса клиентам, которые подключаются к нему. (Даже если есть только один клиент — ваш ноутбук.) Например, это может быть dnsmasq или udhcpd.

  2. Предполагая, что ваш Pi имеет адрес 192.168.1.1 с типичной 24-битной подсетью, вы добавляете адрес из этой подсети в интерфейс Ethernet ноутбука:

     ip addr add 192.168.1.2/24 dev eth0
     

Любая из этих операций должна обеспечить сетевое соединение между двумя системами. Сделав это, вам нужно убедиться, что на вашем Pi действительно работает сервер ssh, включив его в raspi-config.

0
15.04.2019, 20:39
2 ответа

Исправьте назначения массивов и измените тест на регулярное выражение.

#!/bin/bash

FNAME="JACK"
LNAME="BLACK"

SEARCHNAME=()
SEARCHNAME+=("JACK-BLACK")
SEARCHNAME+=("JOHN-JAMES")
SEARCHNAME+=("CHRIS-TOPHER")
SEARCHNAME+=("JEN-NAY")

NAME="${FNAME}-${LNAME}"

if [[ "${SEARCHNAME[@]}" =~ $NAME ]]; then
    echo "PASSED"
else
    echo "FAILED"
fi

echo "SEARCH IN: ${SEARCHNAME[@]}"
echo "FOR NAME: ${NAME}"
2
28.01.2020, 02:25

Здесь следует отметить пару вещей:

  1. Использование ==вместо =~, так как мы не ищем здесь равенства.
  2. Поскольку это regex, а не wildcard, так что...
  3. Порядок операндов в [[ должен быть обратным, а именно, как:

    if [[ ${SEARCHNAME[@]} =~.*$NAME.* ]]
    
1
28.01.2020, 02:25

Теги

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