嵌套 for 循环后未定义变量

问题描述

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

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

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

我是初学者,如果答案显而易见,请见谅。

imap_dfr(allEffects(m2),~ as_tibble(.x) %>% 
     mutate(dname = grep("d_",names(.),value = TRUE)) %>%
     select(dname,dvalue = starts_with('d_'),grade,fit) %>%
     mutate(grp = .y)) %>%
   unite(dname,dname,dvalue,sep=" = ") %>%
   filter(dname  %in% c("d_hyp = 1","d_math = 1")) %>% 
   ggplot(.,aes(x = grade,y = fit,colour = dname,group = dname)) + 
     geom_line() + 
     scale_colour_discrete(guide = 'none') +  
     geom_dl(aes(label = dname),method="last.qp",cex = 0.6) + 
     theme_bw()

解决方法

你可以这样做:

#!/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}"