下面是获取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"在文本中具有以下值。
因为我期待" var"的结果值。 [4472]
我不确定我在哪里做错了。
答案 0 :(得分:1)
您没有指定您正在使用的shell,因此这将没有代码,但一般来说,您应该简单地解析返回的字符串并从中检索值。那只是SAS把信息放在STDOUT中;它会在那里放置各种信息,包括错误和类似信息。
如果你想让解析变得非常容易,可以把它放在方括号或其他东西上,这样可以很容易地进行grep,也许更改
put nobs;
到
put "Obs Count:[" nobs "]";
或类似。
您还应该在此处包含一些错误处理,检查该字符串以确保它没有表明提交代码或类似信息时出错。