Este é o erro que estou recebendo e está falhando devido a uma variável cujo valor deveria ser 2 (estou obtendo isso usando a select * from tabel
). Estou recebendo espaços nessa variável.
+ 0 !=
2
./setjobs[19]: 0: not found.
Como removo todos esses espaços ou uma nova linha dessa variável? Pode tr
, sed
ou qualquer coisa ajudar?
Isto é o que estou fazendo:
set_jobs_count=$(echo "set heading off;
select count(*) from oppar_db
where ( oppar_db_job_name, oppar_db_job_rec ) in ($var) ;" | \
sqlplus -s ${OP_ORA_USER}/${OP_ORA_PASS}@$OPERATIONAL_DB_NAME)
Isso funciona como sugerido:
| sed 's/[[:space:]]//g'
Mas ainda obtenho um valor como:
set_jobs_count=
2
| sed 's/[[:space:]]//g'
o colapso de espaço em brancoset_jobs_count= 2
Respostas:
Você pode usar
tr
, como emtr -d '\040\011\012\015'
, o que removerá espaços, guias, retornos de carro e novas linhas.fonte
\040\011\012\015
mais[:space:]
?%
caractere no final da saída? Acho que é algum tipo de maneira do Linux de me dizer que a saída pára por aí?Em ksh, bash ou zsh:
Em qualquer shell, você pode remover os espaços em branco iniciais e finais e normalizar todos os espaços em branco intermediários em um único espaço como este:
set +f
desliga o brilho; se você souber que os dados não contêm nenhum dos caracteres\[?*
, você pode omiti-lo.fonte
set -- $set_jobs_count
.set_jobs_count=$*
é equivalente aset_jobs_count="$@"
since$*
e$@
é apenas equivalente quando não está entre aspas e o lado direito de uma atribuição é analisado da mesma maneira que uma string com aspas duplas.