Este es el error que obtengo y falla debido a una variable cuyo valor se supone que es 2 (obtengo esto usando a select * from tabel). Estoy obteniendo espacios en esa variable.
+ 0 !=
2
./setjobs[19]: 0: not found.
¿Cómo elimino todos esos espacios o una nueva línea de esa variable? ¿Puede tr, sedo algo ayudar?
Esto es lo que estoy haciendo:
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)
Esto funciona como se sugiere:
| sed 's/[[:space:]]//g'
Pero todavía obtengo un valor como:
set_jobs_count=
2

| sed 's/[[:space:]]//g'colapsar espacios en blancoset_jobs_count= 2Respuestas:
Puede usar
tr, como entr -d '\040\011\012\015', que eliminará espacios, pestañas, retornos de carro y líneas nuevas.fuente
\040\011\012\015más[:space:]?%personaje al final de la salida? Supongo que es una forma de Linux de decirme que la salida se detiene allí.En ksh, bash o zsh:
En cualquier shell, puede eliminar espacios en blanco iniciales y finales y normalizar todos los espacios en blanco intermedios en un solo espacio como este:
set +fapaga el engorde; Si sabe que los datos no contienen ninguno de los caracteres\[?*, puede omitirlos.fuente
set -- $set_jobs_count.set_jobs_count=$*es equivalente aset_jobs_count="$@"desde$*y$@solo son equivalentes cuando no están entre comillas y el lado derecho de una asignación se analiza de la misma manera que una cadena entre comillas dobles.