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.