我已将此shell脚本编写为JAR文件的包装器.该脚本可以毫无问题地启动JAR,但无需等待JAR完成其工作即可完成.
#!/bin/bash
export WORK=/opt/conversion
export LOG=$WORK
export XMAIL=me@email.com
export JAVA_BASE=/usr/java/jdk1.6.0_06
export JAVA_HOME=/usr/java/jdk1.6.0_06/bin
export JAR=$WORK/conversion.jar
export CLASSPATH=$JAVA_BASE/lib/tools.jar
export CLASSPATH=$CLASSPATH:$WORK/lib/ojdbc14.jar
export CLASSPATH=$CLASSPATH:$JAR
$JAVA_HOME/java -Xms256M -Xmx512M -classpath $CLASSPATH com.myapp.cam.conversion >>$WORK/job.out 2>&1 &
echo $! > $WORK/job.pid
mail -s "Conversion" $XMAIL < $WORK/user_message
exit 0
Run Code Online (Sandbox Code Playgroud)
有没有办法让脚本等待我的JAR文件完成?
感谢您的输入.
我是Sed的新手.我有一堆包含数据的ASCII文件,如下所示:
Test_Version:2.6.3
Model-Manufacturer:
HR21-100
Test_Version:2.6.3
Model-Manufacturer:
D12-100
Run Code Online (Sandbox Code Playgroud)
我想要做的就是为"模型制造商:"折叠线条,如下所示:
Test_Version:2.6.3
Model-Manufacturer:HR21-100
Test_Version:2.6.3
Model-Manufacturer:D12-100
Run Code Online (Sandbox Code Playgroud)
我尝试使用sed,因为我发现在"Model-Manufacturer:"之后有2个十六进制值(\n为0x)
cat myfile| sed -n "/[[:xdigit:]]\{2\}/p"
Run Code Online (Sandbox Code Playgroud)
对于我的匹配代码,输出看起来像这样:
Model-Manufacturer:
HR21-100
Model-Manufacturer:
D12-100
Run Code Online (Sandbox Code Playgroud)
这告诉我,我走在正确的轨道上,对吗?我无法弄清楚的是为"模型制造商:"折叠线的正确匹配/替换代码.一次尝试
cat myfile| sed "s/[[:xdigit:]]\{3\}//g"
Run Code Online (Sandbox Code Playgroud)
完成搞砸了我的档案.知道怎么做吗?
我有ASCII文件解析48小时或更长时间; 我可以这样识别它们
find . -name "FILE*TXT" -mtime +1 -exec ls -ltas '{}' ';'
Run Code Online (Sandbox Code Playgroud)
有些文件有硬件错误列表(我们测试电子元件),有些没有.如果文件名没有错误,我仍然想显示这样的消息
grep ^err R*VER && echo "No error"
FILEA.TXT:err ->USB 3910 err
FILED.TXT:err No Error
Run Code Online (Sandbox Code Playgroud)
这个grep语句有效,但如果我同时运行两个语句,它似乎会覆盖上面的find()语句...如何组合这两个语句来创建一个列出文件名和错误的报告,如此
FILEA.TXT Button 3320 err
FILEB.TXT USB 3235 err
FILEC.TXT IR Remote 2436 err
FILED.TXT No error
Run Code Online (Sandbox Code Playgroud)
是否可以在没有错误的情况下返回文件名"No error"?在此先感谢您的帮助.
在我们的开发服务器上,我们有一堆用于Java JAR的shell脚本包装器.使用CRON调度程序,我们每天都会针对不同目的触发这些脚本.
对于性能测试,我们希望在运行时将脚本的PID重新设置为优先级1.
现在,我们从命令行或使用TOP执行此操作.
有没有办法在shell脚本中做到这一点,而不会对进程和其他进程"造成伤害"?
我编写了一个shell脚本,在运行bash shell的服务器上进行数据操作.
我的脚本有一个函数可以检索ZIP文件中的数据
function getCTLfile() {
for i in ${Array[@]}; do
if [[ `echo ${i}|awk -F . '{print $NF}'` == "ctl" ]]; then
echo "${i}"
fi
done
}
Run Code Online (Sandbox Code Playgroud)
它工作得很好但是这台机器硬件有问题所以我们的系统管理员要求我将我的代码移植到运行Korn shell的另一台服务器上.
当我运行我的脚本时,它在我的功能上失败了!! 即使我从命令行输入它.
$ function getCTLfile() {
-ksh: syntax error: `(' unexpected
Run Code Online (Sandbox Code Playgroud)
我需要在任何地方更改语法吗?我做了一些研究,似乎一切都应该有效.
我用SQL*Plus创建了一个"报告",它从OLTP表中添加数据并将结果通过电子邮件发送给一堆用户.
我发现了一个问题.表中的总数CATEGORIES是错误的
SQL> select * from CATEGORIES;
DATE P4 D1 D2 P5 P6 P7 TOTAL
--------- ---------- ---------- ----------- ----------- ----------- -------- -----------
14-OCT-14 200,623 2,320,173 6,807,295 17,861,027 17,386,567 803,982 45,379,667
Run Code Online (Sandbox Code Playgroud)
它应该是"45,379,307"而不是"45,379,667".
此表有NUMBER(10)列,基表有NUMBER列(无精度)来存储类别P4,D1,D2 ...
CATEGORIES表中的总数CATG_ACTV因此从基表获得.
UPDATE CATEGORIES
SET TOTAL = (SELECT SUM(total_catg_count) FROM CATG_ACTV);
Run Code Online (Sandbox Code Playgroud)
为什么总不正确?是因为NUMBER列的大小不正确吗?怎么解决这个问题?