【发布时间】:2018-09-12 10:13:56
【问题描述】:
以下是我用来执行“读取子”的脚本,但不幸的是无法获得所需的结果。
#!/bin/sh
{
echo '%macro read;'
echo '%sysexec ( echo -n "Sub setting condition:");'
echo '%sysexec ( read sub) ;'
echo '%sysexec ( echo "Checking the macro [$sub]");'
echo '%mend;'
echo '%read;'
} > "/home/read.sas"
cd /home
sas /home/read.sas
以下是我对上述脚本的预期结果:
Checking the macro [<text after entering the sub setting condition:>]
提前感谢您的帮助。
【问题讨论】:
-
你想做什么?如果您想与 SAS 交互,请使用
window或%window语句。或者可能学习 SCL 编程。 -
嗨,汤姆,感谢您的回复。我正在尝试为 sas 程序编写一个 shell 脚本,但在上面的脚本中,“read”语句无法正常工作,它的“sub”值为空白。理想情况下,一旦我们输入一些字符串以提示“子设置条件:”,它应该具有“子”的值:
-
如果
read命令在由正在运行的 SAS 程序启动的命令 shell 中运行,谁应该响应它? -
当我们运行 shell 脚本时,SAS 应该以批处理模式运行,%sysexec 函数将执行 unix 的读取命令。
-
为什么?为什么不执行shell脚本中的
read,使用数据生成SAS代码运行呢?这实际上可能有效,但您要尝试做的事情非常棘手。如果您确实需要从终端读取 SAS,请尝试使用 stdin 是您的 infile。