From 7d30dbc6a8b0a267a0769cf94bfa6cd643a886f5 Mon Sep 17 00:00:00 2001 From: David Vazgenovich Shakaryan Date: Tue, 21 Mar 2023 10:03:04 -0700 Subject: improve array loading, no more xargs --- rbpm.sh | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'rbpm.sh') diff --git a/rbpm.sh b/rbpm.sh index 619fc03..cd0696d 100755 --- a/rbpm.sh +++ b/rbpm.sh @@ -44,10 +44,8 @@ _populate_dirs() { [[ -d "${RUBIES_PATH}" ]] \ || _die "directory ${RUBIES_PATH} does not exist." - # Cannot handle paths containing a newline. Only an idiot would - # encounter this in practice. - readarray -t dirs < <(shopt -s nullglob; \ - printf '%s\0' "${RUBIES_PATH}"/* | sort -zV | xargs -0n1) + mapfile -td $'\0' dirs < <(shopt -s nullglob; + printf '%s\0' "${RUBIES_PATH}"/* | sort -zV) [[ -n "${dirs}" ]] || _die "directory ${RUBIES_PATH} is empty." } @@ -55,7 +53,7 @@ _populate_dirs() { _populate_selected() { local dir dirs - IFS=':' read -a dirs <<< "${PATH}" + mapfile -td ':' dirs < <(printf %s "${PATH}") for dir in "${dirs[@]}"; do if [[ "${dir}" == "${RUBIES_PATH}/"* ]]; then @@ -72,7 +70,7 @@ _populate_selected() { _clear() { local dir dirs cdirs - IFS=':' read -a dirs <<< "${PATH}" + mapfile -td ':' dirs < <(printf %s "${PATH}") for dir in "${dirs[@]}"; do if [[ "${dir}" == "${RUBIES_PATH}/"* ]]; then -- cgit v1.2.3-70-g09d2