下面是do循环脚本,用于检查.sas7bdat文件中是否存在变量,并且它正常工作。但是有没有办法检查如果文件中存在所有变量然后分配一些值。
rword = var1 var2 var3 var4
for rwords in $rword
do
cat $path | grep -i $rwords
if [ $? -gt 0 ];
then
echo "$rwords DOES NOT EXIST"
exit
else
echo "$rwords EXIST"
fi
done
谢谢
答案 0 :(得分:0)
使用grep -q
:
if grep -qE -- "$var1|$var2|$var3|var4" "$path"; then
if grep -q -- "$var1" "$path" && grep -q -- "$var2" "$path" && grep -q -- "$var3" "$path"; then
if ! grep -q -- "$var1" "$path"; then
答案 1 :(得分:0)
由于所有变量名称都是唯一的,因此您可以执行以下操作:
if [ "$(grep --count --extended-regexp --ignore-case 'var1|var2|var3|var4' "$path")" -eq 4 ]
then
[all variables exist]
fi
当然,这在几个方面都很脆弱:
var3
则会错误地成功。var4
。更好的解决方案是使用可以可靠地解析格式的库(例如sas7bdat)。 Bash is just bad at parsing any kind of complex file format.