Erro de sintaxe ao extinguir o script de shell bash do busybox

1

Erro de sintaxe ao executar um script de shell bash a partir do busybox

Script

#!/bin/bash
for dev in 'cat /proc/partitions | awk '{print $4}''; do
if cmp -s <(head -c 2 /dev/$dev) <(echo -n -e '\x38\x6e')
then
echo "OK"
break
fi
done

Linha de erro 3

Syntax error: "(" unexpected

    
por Kikapi 10.06.2016 / 12:01

1 resposta

3

O Busybox não faz bash, ele tem apenas um shell sh-like mínimo. A sintaxe <() é específica para o bash (e alguns outros shells similares). Não funcionará com POSIX sh ou busybox sh ou qualquer outro shell mínimo. É por isso que você está recebendo esse erro.

Para que seu script funcione com o busyboxh sh, tente:

match=$'\x38\x63'
for dev in $(awk '/[0-9]/{print $NF}' /proc/partitions); do
        first=$(head -c 2 /dev/$dev)
        if [ "$first" = "$match" ]
        then
                echo "OK"
                break
        fi
done
    
por 10.06.2016 / 12:14

Tags