C'est l'erreur que j'obtiens et elle échoue à cause d'une variable dont la valeur est supposé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 supprimer tous ces espaces ou une nouvelle ligne de cette variable? tr
, sed
, ou autre chose peut-il aider?
Voici 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 retours chariot et les retours à la ligne.
En ksh, bash ou zsh:
set_jobs_count=…
set_jobs_count=${set_jobs_count//[[:space:]]/}
Dans n'importe quel shell, vous pouvez supprimer les espaces blancs de début et de fin et normaliser tous les espaces blancs intermédiaires en un seul espace comme ceci:
set +f
set -- $set_jobs_count
set_jobs_count=$*
set -f
set +f
désactive la globalisation; si vous savez que les données ne contiennent aucun des caractères \[?*
, vous pouvez l'omettre.