Quero dividir uma string contendo -
como primeiro caractere usando espaço em branco como delimitador. Mas o código a seguir parece não funcionar. Se eu remover o -
caractere, ele será dividido corretamente. Este é o script
#!/bin/bash
string="-e -/a/b/c/d"
arr=($string)
arrLen=${#arr[@]}
echo $arrLen
echo ${arr[0]} #prints empty
if [ $arrLen = 2 ] && [ ${arr[0]} = "-e" ]; then #this condition gets passed surprisingly
echo "Hi ${arr[1]}"
fi
Saída
2
Hi -a/b/c/d
Sua divisão está funcionando bem. Seu teste está quebrado.
Apenas para colocar o que já foi respondido nos comentários em um exemplo claro -
Resposta curta: basta usar
printf
.A resposta mais longa pode ser melhor explorada aqui , e talvez lendo a página do manual
echo
.Como um aparte rápido,
echo
infelizmente é um dos poucos utilitários que não podem ser usados--
para desabilitar argumentos posteriores... porque você pode querer imprimir um par de traços. Você pode comprintf
.E se você só precisar imprimir aquele par de traços, você ainda pode fazer isso.