存储sqlPlus块输出的正确csh语法是什么?
$proc = 'process name'
$serv = 'service name*'
$ram = 10MB
$inter = 1
$data = Get-Date -format "yyyy/MM/dd HH:mm:ss"
$log = "c:\log.txt"
$stat = Get-Process $proc -EA SilentlyContinue
while ($true) {
if ((Get-Process $proc -EA SilentlyContinue | Select-Object -Exp ws) -gt $ram) {
Restart-Service $serv
Add-Content -path $log -value ($data + "`t" + "Restarting")
Start-Sleep -m 10000
if ($stat -ne $null) {
Add-Content -path $log -value "Working"
} else {
Start-Service $serv
Add-Content -path $log -value ($data + "`t" + "Starting")
}
}
Start-Sleep -s $inter
}
在这个例子中,我希望能够为csh脚本中的变量赋值“1”。使用另一个shell变体不是一种选择。
答案 0 :(得分:0)
您需要将SQL * Plus中的变量写入一个文件,然后一旦控制权返回到您的CSH程序就可以获取该文件。
请注意,我还将向您展示如何使用column
语句将SQL * Plus列值的输出存储在SQL * Plus变量中。如果你的代码很简单,你可以跳过这一步,但我认为这是一个值得的补充。
sqlplus -s apps/apps@VIS <<SQL
set feedback off
set linesize 100
set lines 150
set pages 0
set head off
set serveroutput on size 10000
column result new_value result
select 1 as result from dual;
prompt Variable result = &result.
spool output.csh
prompt set result = &result.
spool off
SQL
source output.csh
echo "Back in CSH and result = $result "