Supprimer tous les espaces, tabs, nouvelles lignes, etc. d'une variable?

C'est l'erreur que j'obtiens et il échoue à cause d'une variable dont la valeur est censée être 2 (j'obtiens ceci en utilisant un select * from tabel ). J'obtiens des espaces dans cette variable.

 + 0 != 2 ./setjobs[19]: 0: not found. 

Comment puis-je supprimer tous ces espaces ou une nouvelle ligne de cette variable? Peut- tr , sed , ou quelque chose d'aider?

Ce que je fais:

 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) 

Cela fonctionne comme suggéré:

 | sed 's/[[:space:]]//g' 

Mais j'obtiens toujours une valeur comme:

  set_jobs_count= 2 

Vous pouvez utiliser tr , comme dans tr -d '\040\011\012\015' , qui supprimera les espaces, les tabulations, les returns chariot et les returns à la ligne.

Dans ksh, bash ou zsh:

 set_jobs_count=… set_jobs_count=${set_jobs_count//[[:space:]]/} 

Dans n'importe quel shell, vous pouvez supprimer les espaces de début et de fin et normaliser tous les espaces intermédiaires en un seul espace comme ceci:

 set +f set -- $set_jobs_count set_jobs_count=$* set -f 

set +f désactive la fonction Globo; si vous savez que datatables ne contiennent aucun des caractères \[?* , vous pouvez l'omettre.