尝试使用syspam获取sas数据集中的行数

时间:2018-04-18 19:59:32

标签: bash unix sas

下面是获取sas数据集中行数的shell脚本。

echo -n "Enter path:"
read path

echo -n "Enter dataset:"
read name

{
echo "options nofmterr;"
echo "options symbolgen mprint mlogic;"
echo "libname sasdata '$path' access=readonly ;"
echo "data _null_;"
 echo "file stdout;"
 echo 'set "&sysparm" nobs=nobs;'
 echo "put nobs; stop;"
echo "run; "
} > "$path/test1.sas"

cd $path


var=$(sas test1.sas -sysparm  $path/$name.sas7bdat)
echo [$var ]

但是在运行脚本" var"在文本中具有以下值。 enter image description here

因为我期待" var"的结果值。 [4472]

我不确定我在哪里做错了。

1 个答案:

答案 0 :(得分:1)

您没有指定您正在使用的shell,因此这将没有代码,但一般来说,您应该简单地解析返回的字符串并从中检索值。那只是SAS把信息放在STDOUT中;它会在那里放置各种信息,包括错误和类似信息。

如果你想让解析变得非常容易,可以把它放在方括号或其他东西上,这样可以很容易地进行grep,也许更改

put nobs;

put "Obs Count:[" nobs "]";

或类似。

您还应该在此处包含一些错误处理,检查该字符串以确保它没有表明提交代码或类似信息时出错。