Это ошибка, которую я получаю, и она терпит неудачу из-за переменной, значение которой должно быть 2 (я получаю это, используя a select * from tabel
). Я получаю пробелы в этой переменной.
+ 0 !=
2
./setjobs[19]: 0: not found.
Как удалить все эти пробелы или символ новой строки из этой переменной? Может tr
, sed
или чем-нибудь помочь?
Это то, что я делаю:
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)
Это работает как предложено:
| sed 's/[[:space:]]//g'
Но я все еще получаю значение как:
set_jobs_count=
2
| sed 's/[[:space:]]//g'
разрушить пробелыset_jobs_count= 2
Ответы:
Вы можете использовать
tr
, как и вtr -d '\040\011\012\015'
, который удалит пробелы, табуляции, возврат каретки и новые строки.источник
\040\011\012\015
более[:space:]
?%
персонажем в конце вывода? Угадайте, это какой-то способ сказать мне, что вывод на этом останавливается?В кш, баш или зш:
В любой оболочке вы можете удалить начальные и конечные пробелы и нормализовать все промежуточные пробелы в один пробел, например:
set +f
выключает сковывание; если вы знаете, что данные не содержат ни одного из символов\[?*
, вы можете опустить их.источник
set -- $set_jobs_count
.set_jobs_count=$*
эквивалентно ,set_jobs_count="$@"
так$*
и$@
только эквивалентны , когда некотируемых и правая сторона присвоения обрабатывается таким же образом , как двойные кавычки.