From 2d8c227a5029ead7be008a280c4572749581ab15 Mon Sep 17 00:00:00 2001 From: Jack <31696646+myspaghetti@users.noreply.github.com> Date: Thu, 14 Oct 2021 00:30:09 +0300 Subject: [PATCH] arrays instead of strings int comparisons with `-eq` or `-ne` and without quotes `do ${var}` without quotes --- macos-guest-virtualbox.sh | 85 +++++++++++++-------------------------- 1 file changed, 29 insertions(+), 56 deletions(-) diff --git a/macos-guest-virtualbox.sh b/macos-guest-virtualbox.sh index 691f056..28687a8 100755 --- a/macos-guest-virtualbox.sh +++ b/macos-guest-virtualbox.sh @@ -2,7 +2,7 @@ # Push-button installer of macOS on VirtualBox # (c) myspaghetti, licensed under GPL2.0 or higher # url: https://github.com/myspaghetti/macos-virtualbox -# version 0.99.1.3 +# version 0.99.1.4 # Dependencies: bash coreutils gzip unzip wget xxd dmg2img # Optional features: tesseract-ocr tesseract-ocr-eng @@ -205,6 +205,9 @@ if [[ -n "$(gcsplit --help 2>/dev/null)" ]]; then function seq() { gseq "$@" } + function sort() { + gsort "$@" + } fi } @@ -1096,20 +1099,12 @@ fi function and_all_subsequent_stages() { # if exactly two arguments were specified on the command line, and the first is a stage title, # then perform all stages subsequent to the specified stage, otherwise do nothing. - if [[ ${#specified_arguments[@]} == 2 ]]; then - local stage - local first_argument=${specified_arguments[0]} - local run=n - - for stage in "${stages[@]}"; do - [[ $run == n ]] || "$stage" - - if [[ $stage == "$first_argument" ]]; then - # Run all subsequent stages. - run=y - fi - done - fi + [[ ${#specified_arguments[@]} -ne 2 ]] && return + for stage in "${stages[@]}"; do + [[ "${stages[0]}" = "${specified_arguments[0]}" ]] && break + stages=( "${stages[@]:1}" ) + done + for stage in "${stages[@]:1}"; do ${stage}; done } function documentation() { @@ -1713,19 +1708,6 @@ stages=( prompt_delete_temporary_files ) -if [[ $# == 0 ]]; then - for stage in "${stages[@]}"; do - "$stage" - done - - exit -fi - -if [[ $1 == documentation ]]; then - documentation - exit -fi - other_commands=( check_shell troubleshoot @@ -1733,36 +1715,27 @@ other_commands=( and_all_subsequent_stages ) -specified_arguments=("$@") # this variable is used in the function "and_all_subsequent_stages" -for specified_arg; do - there_is_a_match=n - for valid_arg in "${stages[@]}" "${other_commands[@]}"; do - if [[ $valid_arg == "$specified_arg" ]]; then - there_is_a_match=y - break - fi - done +# script called without arguments +[[ $# -eq 0 ]] && for stage in "${stages[@]}"; do ${stage}; done && exit - if [[ $there_is_a_match == n ]]; then - cat <