【问题标题】:Array not reading all values数组未读取所有值
【发布时间】:2019-02-20 14:04:10
【问题描述】:

我试图让这个数组工作,但它只读取第一个文件夹。

SFA=(folder1 folder2)

和代码:

for folders in "${SFA[@]}"
do
echo /media/$SFA
done

但它似乎只遍历一个文件夹 (tv1) 2 次。我看不出代码有什么问题...

【问题讨论】:

  • 该代码是正确的。您必须提供一些证据或您的实际代码
  • 如果您要按名称引用文件夹 (tv1),请在您的示例中使用它而不是组成的名称 folder1folder2
  • 另外,你想要/media/$folders,而不是/media/$SFA(相当于/media/${SFA[0]}。你的迭代很好,只是你没有使用正确的变量。

标签: arrays bash directory


【解决方案1】:

你可以这样做:

declare SFA=(folder1 folder2)    
for folders in "${SFA[@]}"; do echo /media/$folders; done

输出如下:

:~$
/media/folder1
/media/folder2

【讨论】:

  • 谢谢各位,我用错了变量。估计太累了。但现在可以了。
【解决方案2】:

我发现自己的错误... 代码现在看起来像这样,并且可以按预期工作。

FOLDERARRAY=(tv1 tv2)

    ### Check for FOLDERS in FOLDERARRAY
    #
    for FOLDERS in "${FOLDERARRAY[@]}"
    do
        #   echo /media/$SFA
        if [ ! -d /media/$FOLDERS ]; then
            echo /media/$FOLDERS; status="Couldn't find /media/$FOLDERS"
            # exit 0
        else 
            echo "found folder: /media/$FOLDERS"
            find /media/${FOLDERARRAY} -mtime -7 -type f -size +2048 -exec 
    basename {} \;| sort |uniq  >> /tmp/v$DATE-weekly.txt;
        fi

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-28
    • 1970-01-01
    • 1970-01-01
    • 2015-10-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多