Предполагая, что в настоящее время принят ответ:
awk '
!/bind|swap|shm/ && $1 !~/#|^$/{
system("if [[ -n $(findmnt -m " $2 ") ]]; \
then echo Mount " $2 " is mounted.;\
else echo Mount " $2 " is NOT mounted.;\
fi"\
)
}
' /etc/fstab
делает то, что вы хотите, вы должны вместо этого сделать что-то вроде этого (не проверено):
mounts=( $(awk '!/bind|swap|shm/ && $1 !~/#|^$/ { print $2 }' /etc/fstab) )
for mount in "${mounts[@]}"; do
if [[ -n $(findmnt -m "$mount") ]]
then echo "Mount $mount is mounted."
else echo "Mount $mount is NOT mounted."
fi
done
т.е. не вызывать shell вызывать awk для вызова system для вызова shell для вызова findmnt. Просто введите shell: 1) вызовите awk, чтобы получить список монтирований, из которых выплевывается первая строка awk, а затем 2) вызовите findmnt из этого списка. Таким образом, вы не порождаете подоболочки на подоболочки и глубиной 5 слоев для каждой горы.