以下脚本正在仅具有csh的HP-UX盒上运行。
#!/bin/csh -fx
set todaysDate = `date +%m%d%y-%H:%M`
echo -n Paste the email information here:
set input = $<
set info = `echo $input > jcc.$todaysDate`
sed 's/.*\(PL[0-9]*\).*/\1/' jcc.$todaysDate > sample2
echo $info
echo -n Type y if the output is correct or n if it is incorrect
set answer = $<
if($answer == y || $answer == Y) then
#send to other script
else if($Answer == n || $Answer == N) then
exit
else
echo "Invalid input"
endif
目前尚未检索到所需的所有值。
以下是输入的信息:
Sample
1.-PL000000002002124215 12 DAY 3/11/2013
2.-PL000000002002365287 67 DAY 22/11/2013
3 PL000000002002745214 35 DAY 27/11/2013
根据电子邮件中的信息,第一行是唯一存储在变量中的内容。
预期输出为:
PL000000002002124215
PL000000002002365287
PL000000002002745214
感谢@ keith-thompson和@shellter的回复!
这是根据您的信息和我所做的更改输出的结果:
set todaysDate = `date +%m%d%y-%H:%M`
date +%m%d%y-%H:%M
echo -n Paste the email information here:
Paste the email information here:Sample
1.-PL000000002002124215 12 DAY 3/11/2013
set input = Sample
2.-PL000000002002365287 67 DAY 22/11/2013
echo Sample
3 PL000000002002745214 35 DAY 27/11/2013sed s/.*\(PL[0-9]*\).*/\1/ jcc.120913-15:10
echo Sample
Sample
echo -n Type y if the output is correct or n if it is incorrect
Type y if the output is correct or n if it is incorrectset answer = 1.- PL000000002002124215 12 DAY 3/11/2013
if ( 1.-PL000000002002124215 12 DAY 3/11/2013 == y || 1.-PL000000002002124215 12 DAY 3/11/2013 == Y ) then
if: Badly formed number.
homes/ 32% 2.-PL000000002002365287 67 DAY 22/11/2013
2.-PL000000002002365287: Command not found.
homes/ 33% 3 PL000000002002745214 35 DAY 27/11/2013
答案 0 :(得分:0)
set info = `echo $input > jcc.$todaysDate`
这会将$info
设置为命令echo $input > jcc.$todaysDate
的输出。由于其输出被重定向到文件,因此没有剩余存储在$info
。
无论如何都不需要捕获echo
命令的输出,因为您已经在$input
中拥有它。
我没有分析过你的整个剧本,但对于初学者我只会用以下内容替换上面的内容:
echo $input > jcc.$todaysDate`
并将$info
的所有引用替换为$input
。
我强烈建议缩进你的代码;它使阅读和维护变得更加容易。
最后,您应该阅读Csh Programming Considered Harmful。你说你的系统只有csh,但我确定它有一些版本的Bourne shell安装为/bin/sh
。