これは私が取得しているエラーで、値が2であるはずの変数が原因で失敗しています(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
tr -d '\040\011\012\015'
のようにtr
を使用できます。これにより、スペース、タブ、キャリッジリターン、改行が削除されます。
Ksh、bash、またはzshの場合:
set_jobs_count=…
set_jobs_count=${set_jobs_count//[[:space:]]/}
どのシェルでも、次のように先頭と末尾の空白を削除し、すべての中間の空白を単一のスペースに正規化できます。
set +f
set -- $set_jobs_count
set_jobs_count=$*
set -f
set +f
はグロビングをオフにします。データに\[?*
という文字が含まれていないことがわかっている場合は、省略できます。