这个程序我使用有它自己的变量,当你运行它来设置,所以我要设置这些变量,然后greping输出然后再将其存储在变量中。不过,我不知道如何去了解这个正确的方法。这个想法我都不起作用。重点是线7至14。

1  #!/usr/local/bin/bash
2  source /home/gempak/NAWIPS/Gemenviron.profile
3  FILENAME="$(date -u '+%Y%m%d')_sao.gem"
4  SFFILE="$GEMDATA/surface/$FILENAME"
5  echo -n "Enter the station ID: "
6  read -e STATION
7  OUTPUT=$(sflist << EOF
8  SFFILE = $SFFILE
9  AREA = @$STATION
10 DATTIM = all
11 SFPARM = TMPF;DWPF
12 run
13 exit
14 EOF)
15 echo $OUTPUT

不过,我得到这样的:

./listweather: line 7: unexpected EOF while looking for matching `)'
./listweather: line 16: syntax error: unexpected end of file
有帮助吗?

解决方案

放在一起大家的答案,我碰到一个有效的解决方案来喽。此代码对我的作品:

#!/usr/local/bin/bash
source /home/gempak/NAWIPS/Gemenviron.profile
FILENAME="$(date -u '+%Y%m%d')_sao.gem"
SFFILE="$GEMDATA/surface/$FILENAME"
echo -n "Enter the station ID: "
read -e STATION

OUTPUT=$(sflist << EOF
SFFILE = $SFFILE
AREA = @$STATION
DATTIM = ALL
SFPARM = TMPF;DWPF
run
exit
EOF
)
echo $OUTPUT | grep $STATION

谢谢大家!

其他提示

我把你的程序在一个单独的.SH的脚本文件运行,然后再从第一个文件运行脚本,传递你想传递作为命令行参数的参数。这样,你可以分别测试它们。

您也能做到这一点的功能,但我喜欢第二个脚本的模块化。我不udnerstand正是你正在尝试上述的事,但这样的:

runsflist.sh:
#!/bin/bash

FILENAME="$(date -u '+%Y%m%d')_sao.gem"
SFFILE="$GEMDATA/surface/$FILENAME"
AREA = @$STATION
DATTIM = all
SFPARM = TMPF;DWPF
grep $STATION | sflist

main.sh:
#!/bin/bash

echo -n "Enter the station ID: "
read -e STATION
OUTPUT=`runsflist.sh`
echo $OUTPUT

如果sflist需要互动,我想尝试这样的:

SFFILE=$(
  ( echo SFFILE = "$SFFILE"
    echo AREA = "@$STATION"
    echo DATTIM = all
    echo SFPARM = TMPF;DWPF
    echo run
    cat
  ) | sflist)

不幸的是,你有作为交互的一部分输入exit

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top