【问题标题】:Accessing files in folders by defining multiple variables in bash script通过在 bash 脚本中定义多个变量来访问文件夹中的文件
【发布时间】:2020-07-02 01:09:48
【问题描述】:

我正在尝试访问多个文件夹中的文件以将它们复制到新文件夹中。

我使用如下变量定义文件夹。

q="Q1-students-answer2"  # this is a folder

achari1="AHMAD_JAUHARI_BIN_NAZAIDI_._1587851_assignsubmission_file_"   #this is folder
achari2="AINUL_SUHAILAH_BINTI_MAIL_._1587856_assignsubmission_file_"   #this is folder
achari3="AMIRAH_NURAZIZAH_._1587875_assignsubmission_file_"   #this is folder
achari4="AMIRAH_RADHIANIE_BINTI_RINING_._1587865_assignsubmission_file_"   #this is folder

下面是“for”块,用于递归访问我使用变量定义为 achari1、achari2、achari3 和 achari4 的文件夹

for i in {1..4};do
    
    echo $q/$achari$i   

done

这段代码给出的输出为

Q1-students-answer2/1
Q1-students-answer2/2
Q1-students-answer2/3
Q1-students-answer2/4

相反,我希望输出为

Q1-students-answer2/AHMAD_JAUHARI_BIN_NAZAIDI_._1587851_assignsubmission_file_
Q1-students-answer2/AINUL_SUHAILAH_BINTI_MAIL_._1587856_assignsubmission_file_
Q1-students-answer2/AMIRAH_NURAZIZAH_._1587875_assignsubmission_file_
Q1-students-answer2/AMIRAH_RADHIANIE_BINTI_RINING_._1587865_assignsubmission_file_

我尝试了很多其他方法,例如

echo "$q/achari$i"

or 

(cd $q/achari$i;
echo  $q/$(achari)$i;
cd ../)

or 

echo "$q/$(achari)$i"

但以上所有这些似乎都不起作用。

如果有人能指出我的代码有什么问题,请不胜感激。

【问题讨论】:

    标签: bash for-loop variables


    【解决方案1】:

    使用数组,而不是单独的变量:

    achari=("AHMAD_JAUHARI_BIN_NAZAIDI_._1587851_assignsubmission_file_"   #this is folder
            "AINUL_SUHAILAH_BINTI_MAIL_._1587856_assignsubmission_file_"   #this is folder
            "AMIRAH_NURAZIZAH_._1587875_assignsubmission_file_"   #this is folder
            "AMIRAH_RADHIANIE_BINTI_RINING_._1587865_assignsubmission_file_")   #this is folder
    for dir in "${achari[@]}"; do
        echo $q/$dir
    done
    

    【讨论】:

      【解决方案2】:

      要么使用数组,要么使用间接扩展,如下所示:

      #!/bin/bash
      
      q="Q1-students-answer2"  # this is a folder
      
      achari1="AHMAD_JAUHARI_BIN_NAZAIDI_._1587851_assignsubmission_file_"
      achari2="AINUL_SUHAILAH_BINTI_MAIL_._1587856_assignsubmission_file_"
      achari3="AMIRAH_NURAZIZAH_._1587875_assignsubmission_file_"
      achari4="AMIRAH_RADHIANIE_BINTI_RINING_._1587865_assignsubmission_file_"
      
      for i in {1..4}; do
          t=achari$i
          echo "$q"/"${!t}"
      done
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-03-08
        • 1970-01-01
        • 1970-01-01
        • 2019-11-22
        • 1970-01-01
        • 2021-02-27
        • 1970-01-01
        • 2018-12-04
        相关资源
        最近更新 更多