#!/bin/bash proc vbox_version { cat "/home/ubuntu/.vbox_version" return 0 } proc remove_existing_guest_additions { service virtualbox-guest-utils stop sleep 1 modprobe -r vboxguest apt-get purge -y virtualbox-guest* } proc mount_guest_additions { mkdir /tmp/vbox mount -o loop "/home/ubuntu/VBoxGuestAdditions-$[vbox_version].iso" /tmp/vbox } proc install_guest_additions { sh /tmp/vbox/VBoxLinuxAdditions.run } proc umount_guest_additions { umount /tmp/vbox rmdir /tmp/vbox } proc main { remove_existing_guest_additions mount_guest_additions install_guest_additions umount_guest_additions } main (CommandList children: [ (FuncDef name: vbox_version body: (BraceGroup children: [ (C {(cat)} {(DQ (/home/ubuntu/.vbox_version))}) (ControlFlow token: arg_word:{(0)}) ] spids: [8] ) spids: [4 7] ) (FuncDef name: remove_existing_guest_additions body: (BraceGroup children: [ (C {(service)} {(virtualbox-guest-utils)} {(stop)}) (C {(sleep)} {(1)}) (C {(modprobe)} {(-r)} {(vboxguest)}) (C {(apt-get)} {(purge)} {(-y)} {(virtualbox-guest) (Lit_Other "*")}) ] spids: [29] ) spids: [25 28] ) (FuncDef name: mount_guest_additions body: (BraceGroup children: [ (C {(mkdir)} {(/tmp/vbox)}) (C {(mount)} {(-o)} {(loop)} { (DQ (/home/ubuntu/VBoxGuestAdditions-) (CommandSubPart command_list: (CommandList children:[(C {(vbox_version)})]) left_token: spids: [83 85] ) (.iso) ) } {(/tmp/vbox)} ) ] spids: [67] ) spids: [63 66] ) (FuncDef name: install_guest_additions body: (BraceGroup children:[(C {(sh)} {(/tmp/vbox/VBoxLinuxAdditions.run)})] spids:[98]) spids: [94 97] ) (FuncDef name: umount_guest_additions body: (BraceGroup children: [(C {(umount)} {(/tmp/vbox)}) (C {(rmdir)} {(/tmp/vbox)})] spids: [112] ) spids: [108 111] ) (FuncDef name: main body: (BraceGroup children: [ (C {(remove_existing_guest_additions)}) (C {(mount_guest_additions)}) (C {(install_guest_additions)}) (C {(umount_guest_additions)}) ] spids: [131] ) spids: [127 130] ) (C {(main)}) ] )