use sed from global var VBMC_SED instead of function

This commit is contained in:
Schplurtz le Déboulonné
2020-02-16 18:45:56 +01:00
parent 0ffc79dbe2
commit 31a7eec15a

View File

@@ -6,14 +6,13 @@
# License: 3-clause BSD-style license (see LICENSE file) # License: 3-clause BSD-style license (see LICENSE file)
# Version: 6.1.0 # Version: 6.1.0
# define the real sed command to use. GNU sed is needed
_vbmc_sed() {
sed "$@"
}
_VBoxManage() { _VBoxManage() {
local cur prev opts cmd subcommand tmp items name index result local cur prev opts cmd subcommand tmp items name index result
# env var GNUSED is either empty or points to a gnu sed executable
VBMC_SED=${GNUSED:-sed}
# Check the COMP_WORDS looking for name of the vm. If name contain space or # Check the COMP_WORDS looking for name of the vm. If name contain space or
# is enclosed in quotes, glue name together in variable name. Variable index # is enclosed in quotes, glue name together in variable name. Variable index
# will hold the last index of COMP_WORDS array which contain the end of the # will hold the last index of COMP_WORDS array which contain the end of the
@@ -70,10 +69,10 @@ _VBoxManage() {
hdds=$(VBoxManage list hdds | \ hdds=$(VBoxManage list hdds | \
grep -A 1 'normal (base)' | \ grep -A 1 'normal (base)' | \
grep "Location:" | \ grep "Location:" | \
_vbmc_sed 's/Location:\s\+//' | \ $VBMC_SED 's/Location:\s\+//' | \
_vbmc_sed 's/\s/\\ /g' | \ $VBMC_SED 's/\s/\\ /g' | \
tr '\n' '|' | \ tr '\n' '|' | \
_vbmc_sed 's/|$//') $VBMC_SED 's/|$//')
IFS='|' read -ra hdds <<< "$hdds" IFS='|' read -ra hdds <<< "$hdds"
for item in "${hdds[@]}" for item in "${hdds[@]}"
@@ -88,10 +87,10 @@ _VBoxManage() {
floppies=$(VBoxManage list floppies | \ floppies=$(VBoxManage list floppies | \
grep "Location:" | \ grep "Location:" | \
_vbmc_sed 's/Location:\s\+//' | \ $VBMC_SED 's/Location:\s\+//' | \
_vbmc_sed 's/\s/\\ /g' | \ $VBMC_SED 's/\s/\\ /g' | \
tr '\n' '|' | \ tr '\n' '|' | \
_vbmc_sed 's/|$//') $VBMC_SED 's/|$//')
IFS='|' read -ra floppies <<< "$floppies" IFS='|' read -ra floppies <<< "$floppies"
for item in "${floppies[@]}" for item in "${floppies[@]}"
@@ -106,10 +105,10 @@ _VBoxManage() {
dvds=$(VBoxManage list dvds | \ dvds=$(VBoxManage list dvds | \
grep "Location:" | \ grep "Location:" | \
_vbmc_sed 's/Location:\s\+//' | \ $VBMC_SED 's/Location:\s\+//' | \
_vbmc_sed 's/\s/\\ /g' | \ $VBMC_SED 's/\s/\\ /g' | \
tr '\n' '|' | \ tr '\n' '|' | \
_vbmc_sed 's/|$//') $VBMC_SED 's/|$//')
IFS='|' read -ra dvds <<< "$dvds" IFS='|' read -ra dvds <<< "$dvds"
for item in "${dvds[@]}" for item in "${dvds[@]}"
@@ -135,16 +134,16 @@ _VBoxManage() {
running_vms=$(VBoxManage list runningvms | \ running_vms=$(VBoxManage list runningvms | \
awk -F ' {' '{ print $1 }' | \ awk -F ' {' '{ print $1 }' | \
tr '\n' '|' | \ tr '\n' '|' | \
_vbmc_sed 's/|$//' | \ $VBMC_SED 's/|$//' | \
_vbmc_sed 's/"//g') $VBMC_SED 's/"//g')
IFS='|' read -ra running_vms <<< "$running_vms" IFS='|' read -ra running_vms <<< "$running_vms"
fi fi
vms=$(VBoxManage list $command | \ vms=$(VBoxManage list $command | \
awk -F ' {' '{ print $1 }' | \ awk -F ' {' '{ print $1 }' | \
tr '\n' '|' | \ tr '\n' '|' | \
_vbmc_sed 's/|$//' | \ $VBMC_SED 's/|$//' | \
_vbmc_sed 's/"//g') $VBMC_SED 's/"//g')
IFS='|' read -ra vms <<< "$vms" IFS='|' read -ra vms <<< "$vms"
for item in "${vms[@]}" for item in "${vms[@]}"
do do
@@ -167,10 +166,10 @@ _VBoxManage() {
vms=$(VBoxManage list vms -l | \ vms=$(VBoxManage list vms -l | \
egrep '^Name|State' | \ egrep '^Name|State' | \
egrep -B1 'State:\s+saved' | \ egrep -B1 'State:\s+saved' | \
grep Name |_vbmc_sed 's/Name:\s\+//' | \ grep Name |$VBMC_SED 's/Name:\s\+//' | \
tr '\n' '|' | \ tr '\n' '|' | \
_vbmc_sed 's/|$//' | \ $VBMC_SED 's/|$//' | \
_vbmc_sed 's/"//g') $VBMC_SED 's/"//g')
IFS='|' read -ra vms <<< "$vms" IFS='|' read -ra vms <<< "$vms"
for item in "${vms[@]}" for item in "${vms[@]}"
do do
@@ -184,9 +183,9 @@ _VBoxManage() {
list=$(VBoxManage list groups | \ list=$(VBoxManage list groups | \
tr '\n' '|' | \ tr '\n' '|' | \
_vbmc_sed 's/|$//' | \ $VBMC_SED 's/|$//' | \
_vbmc_sed 's/\s/\\ /g'| \ $VBMC_SED 's/\s/\\ /g'| \
_vbmc_sed 's/"//g') $VBMC_SED 's/"//g')
IFS='|' read -ra list <<< "$list" IFS='|' read -ra list <<< "$list"
for item in "${list[@]}" for item in "${list[@]}"
@@ -201,9 +200,9 @@ _VBoxManage() {
list=$(VBoxManage list ostypes | \ list=$(VBoxManage list ostypes | \
egrep ^ID: | \ egrep ^ID: | \
_vbmc_sed 's/ID:\s\+//' | \ $VBMC_SED 's/ID:\s\+//' | \
tr '\n' '|' | \ tr '\n' '|' | \
_vbmc_sed 's/|$//') $VBMC_SED 's/|$//')
IFS='|' read -ra list <<< "$list" IFS='|' read -ra list <<< "$list"
for item in "${list[@]}" for item in "${list[@]}"
@@ -218,10 +217,10 @@ _VBoxManage() {
list=$(VBoxManage list dhcpservers | \ list=$(VBoxManage list dhcpservers | \
grep NetworkName: | \ grep NetworkName: | \
_vbmc_sed 's/NetworkName:\s\+//' | \ $VBMC_SED 's/NetworkName:\s\+//' | \
_vbmc_sed 's/\s/\\ /g'| \ $VBMC_SED 's/\s/\\ /g'| \
tr '\n' '|' | \ tr '\n' '|' | \
_vbmc_sed 's/|$//') $VBMC_SED 's/|$//')
IFS='|' read -ra list <<< "$list" IFS='|' read -ra list <<< "$list"
for item in "${list[@]}" for item in "${list[@]}"
@@ -236,10 +235,10 @@ _VBoxManage() {
list=$(VBoxManage list hostonlyifs | \ list=$(VBoxManage list hostonlyifs | \
egrep ^Name: | \ egrep ^Name: | \
_vbmc_sed 's/Name:\s\+//' | \ $VBMC_SED 's/Name:\s\+//' | \
_vbmc_sed 's/\s/\\ /g'| \ $VBMC_SED 's/\s/\\ /g'| \
tr '\n' '|' | \ tr '\n' '|' | \
_vbmc_sed 's/|$//') $VBMC_SED 's/|$//')
IFS='|' read -ra list <<< "$list" IFS='|' read -ra list <<< "$list"
for item in "${list[@]}" for item in "${list[@]}"
@@ -258,8 +257,8 @@ _VBoxManage() {
awk -F ',' '{print $1}' | \ awk -F ',' '{print $1}' | \
awk -F '=' '{print $2}' | \ awk -F '=' '{print $2}' | \
tr '\n' '|' | \ tr '\n' '|' | \
_vbmc_sed 's/|$//' | \ $VBMC_SED 's/|$//' | \
_vbmc_sed 's/\s/\\ /g') $VBMC_SED 's/\s/\\ /g')
IFS='|' read -ra rules <<< "$rules" IFS='|' read -ra rules <<< "$rules"
for item in "${rules[@]}" for item in "${rules[@]}"
@@ -300,7 +299,7 @@ _VBoxManage() {
devs=$(VBoxManage controlvm "${name//\\/}" \ devs=$(VBoxManage controlvm "${name//\\/}" \
webcam list | \ webcam list | \
tr '\n' ' ' | \ tr '\n' ' ' | \
_vbmc_sed 's/|s$//') $VBMC_SED 's/|s$//')
read -ra devs <<< "$devs" read -ra devs <<< "$devs"
for item in "${devs[@]}" for item in "${devs[@]}"
@@ -317,7 +316,7 @@ _VBoxManage() {
devs=$(VBoxManage list webcams | \ devs=$(VBoxManage list webcams | \
grep dev | \ grep dev | \
tr '\n' ' ' | \ tr '\n' ' ' | \
_vbmc_sed 's/|s$//') $VBMC_SED 's/|s$//')
read -ra devs <<< "$devs" read -ra devs <<< "$devs"
for item in "${devs[@]}" for item in "${devs[@]}"
@@ -328,7 +327,7 @@ _VBoxManage() {
_list_comp() { _list_comp() {
local list local list
list=$(VBoxManage list | _vbmc_sed -e '1,2d' \ list=$(VBoxManage list | $VBMC_SED -e '1,2d' \
-e 's/VBoxManage list //' \ -e 's/VBoxManage list //' \
-e 's/[\[\]\|]/ /g' \ -e 's/[\[\]\|]/ /g' \
-e 's/|/ /g'|xargs echo) -e 's/|/ /g'|xargs echo)
@@ -343,10 +342,10 @@ _VBoxManage() {
folders=$(VBoxManage showvminfo ${vm} --machinereadable | \ folders=$(VBoxManage showvminfo ${vm} --machinereadable | \
grep SharedFolderName | \ grep SharedFolderName | \
awk -F= '{print $2}' | \ awk -F= '{print $2}' | \
_vbmc_sed 's/\s/\\ /g'| \ $VBMC_SED 's/\s/\\ /g'| \
tr '\n' '|' | \ tr '\n' '|' | \
_vbmc_sed 's/|$//' | \ $VBMC_SED 's/|$//' | \
_vbmc_sed 's/"//g') $VBMC_SED 's/"//g')
IFS='|' read -ra folders <<< "$folders" IFS='|' read -ra folders <<< "$folders"
for item in "${folders[@]}" for item in "${folders[@]}"
@@ -361,10 +360,10 @@ _VBoxManage() {
list=$(VBoxManage list natnets | \ list=$(VBoxManage list natnets | \
grep NetworkName: | \ grep NetworkName: | \
_vbmc_sed 's/NetworkName:\s\+//' | \ $VBMC_SED 's/NetworkName:\s\+//' | \
_vbmc_sed 's/\s/\\ /g'| \ $VBMC_SED 's/\s/\\ /g'| \
tr '\n' '|' | \ tr '\n' '|' | \
_vbmc_sed 's/|$//') $VBMC_SED 's/|$//')
IFS='|' read -ra list <<< "$list" IFS='|' read -ra list <<< "$list"
for item in "${list[@]}" for item in "${list[@]}"
@@ -379,10 +378,10 @@ _VBoxManage() {
list=$(VBoxManage list bridgedifs | \ list=$(VBoxManage list bridgedifs | \
egrep ^Name: | \ egrep ^Name: | \
_vbmc_sed 's/Name:\s\+//' | \ $VBMC_SED 's/Name:\s\+//' | \
_vbmc_sed 's/\s/\\ /g'| \ $VBMC_SED 's/\s/\\ /g'| \
tr '\n' '|' | \ tr '\n' '|' | \
_vbmc_sed 's/|$//') $VBMC_SED 's/|$//')
IFS='|' read -ra list <<< "$list" IFS='|' read -ra list <<< "$list"
for item in "${list[@]}" for item in "${list[@]}"
@@ -397,10 +396,10 @@ _VBoxManage() {
list=$(VBoxManage list intnets| \ list=$(VBoxManage list intnets| \
egrep ^Name: | \ egrep ^Name: | \
_vbmc_sed 's/Name:\s\+//' | \ $VBMC_SED 's/Name:\s\+//' | \
_vbmc_sed 's/\s/\\ /g'| \ $VBMC_SED 's/\s/\\ /g'| \
tr '\n' '|' | \ tr '\n' '|' | \
_vbmc_sed 's/|$//') $VBMC_SED 's/|$//')
IFS='|' read -ra list <<< "$list" IFS='|' read -ra list <<< "$list"
for item in "${list[@]}" for item in "${list[@]}"
@@ -443,10 +442,10 @@ _VBoxManage() {
providers=$(VBoxManage list cloudproviders | \ providers=$(VBoxManage list cloudproviders | \
grep "Short Name:" | \ grep "Short Name:" | \
_vbmc_sed 's/Short Name:\s\+//' | \ $VBMC_SED 's/Short Name:\s\+//' | \
_vbmc_sed 's/\s/\\ /g' | \ $VBMC_SED 's/\s/\\ /g' | \
tr '\n' '|' | \ tr '\n' '|' | \
_vbmc_sed 's/|$//') $VBMC_SED 's/|$//')
IFS='|' read -ra providers <<< "$providers" IFS='|' read -ra providers <<< "$providers"
for item in "${providers[@]}" for item in "${providers[@]}"
@@ -461,10 +460,10 @@ _VBoxManage() {
profiles=$(VBoxManage list cloudprofiles | \ profiles=$(VBoxManage list cloudprofiles | \
grep "Name:" | \ grep "Name:" | \
_vbmc_sed 's/Name:\s\+//' | \ $VBMC_SED 's/Name:\s\+//' | \
_vbmc_sed 's/\s/\\ /g' | \ $VBMC_SED 's/\s/\\ /g' | \
tr '\n' '|' | \ tr '\n' '|' | \
_vbmc_sed 's/|$//') $VBMC_SED 's/|$//')
IFS='|' read -ra profiles <<< "$profiles" IFS='|' read -ra profiles <<< "$profiles"
for item in "${profiles[@]}" for item in "${profiles[@]}"