0

我正在尝试创建一个脚本,允许用户从已安装的卷中选择备份目标。

虽然我有一个初稿工作,但它有重复,我试图通过在嵌套的 for 循环中重建来删除它,但是到脚本结束时,我的变量变得未定义,我看不出我犯了什么错误。

为什么我的变量定义在第 19 行而不是第 27-29 行?

我是初学者,如果答案很明显,请道歉。

#!/bin/bash

VOLUMES=$(ls /volumes)

WORKING_DRIVE=
MASTER_DRIVE=
CLONE_DRIVE=

echo
for BACKUP_DESTINATION in 'Working Drive' 'Master Drive' 'Clone Drive'
do
    for VOLUME_VARIABLE in "${WORKING_DRIVE}" "${MASTER_DRIVE}" "${CLONE_DRIVE}"
    do
        echo "Select your ${BACKUP_DESTINATION}"
        echo
        select VOLUME_VARIABLE in $VOLUMES
        do
            echo
            echo "${BACKUP_DESTINATION}: $VOLUME_VARIABLE"
            echo
            break
        done
        break
    done
done

echo "Working Drive is: ${WORKING_DRIVE}"
echo "Master Drive is: ${MASTER_DRIVE}"
echo "Clone Drive is: ${CLONE_DRIVE}"
4

1 回答 1

0

你可以这样做:

#!/bin/bash

VOLUMES=$(ls /volumes)
DATA=''

function selectDestination() {
    echo "Select your ${1}"
    echo
    select VOLUME_VARIABLE in $VOLUMES
    do
        echo
        echo "${1}: $VOLUME_VARIABLE"
        echo
        break
    done

    DATA=${VOLUME_VARIABLE}
}

echo

selectDestination 'Working Drive'
WORKING_DRIVE=${DATA}
selectDestination 'Master Drive'
MASTER_DRIVE=${DATA}
selectDestination 'Clone Drive'
CLONE_DRIVE=${DATA}


echo "Working Drive is: ${WORKING_DRIVE}"
echo "Master Drive is: ${MASTER_DRIVE}"
echo "Clone Drive is: ${CLONE_DRIVE}"
于 2021-01-23T18:50:18.143 回答