Se você quiser redirecionar a saída do comando echo
, o operador de redirecionamento >
precisa estar fora de qualquer cotação. O caractere >
entre aspas duplas significa por si mesmo.
Por padrão, no bash, echo
não expande sequências de contrabarra. Você precisa passar a opção -e
para echo
, definir a opção xpg_echo
shell com shopt
ou usar printf
em vez de echo
.
for i in 'seq 4006 4075'; do
printf "vid %s\nports %d\nactive = 1\n" "$i" 524288 1 >"vlan_$i.ini"
done
Um aqui documento é mais legível
maneira de representar uma string multilinha. Como ele é passado como entrada e não como um argumento de linha de comando, use cat
em vez de echo
. Observe que, se o texto for recuado, o recuo será copiado (é possível evitar isso com <<-EOF
em vez de <<EOF
, mas você só pode usar tabulações para recuar, não espaços).
for i in 'seq 4006 4075'; do
cat <<EOF >"vlan_$i.ini"
vid $i
ports 524288
active = 1
EOF
done