Existem quatro questões principais neste script:
-
A
#!-line na parte superior está ausente. Tanto quanto eu posso ver, isso pode ser#!/bin/sh. -
Expansões variáveis não são citadas. Use aspas duplas para evitar a divisão de palavras e a globalização de nomes de arquivos. Por exemplo,
if [ "$var" = 0 ]. Aqui você também pode escolher usar-eqno lugar de=, já que você está fazendo um teste aritmético. -
As atribuições não devem ter espaços em torno de
=. -
O primeiro argumento de
printfdeve ser uma string de formato, por exemplo,printf '%s %s\n' "$dtype" "$vtype".
Essas coisas podem ser encontradas usando o site do ShellCheck .
Há também uma pequena ineficiência:
lsmod | grep kvm | awk 'NR==1{print $3}' 2>/dev/null
poderia ser escrito, quase de forma equivalente,
lsmod | awk '/kvm/ { print $3; exit }'
Não sei por que você colocou espaços nos valores de algumas das variáveis, por exemplo, dtype=' HDD ' .