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-eq
no 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
printf
deve 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 '
.