复制带有注释的文件列表

复制带有注释的文件列表

我有一个构建脚本,它将一些文件复制到构建文件夹。

构建脚本用于各种应用程序,每个应用程序需要部署的文件略有不同。因此,需要对脚本中嵌入的文件进行注释。

我的第一次尝试看起来像这样

dest=$outputfolder
"rm *.* $dest
SRC_DIR="./../../source"

files=(
$SRC_DIR/../*.txt                                
$SRC_DIR/../resources/*.ico                      
$OUTPUTDIR/$OUTPUTFILENAME                       
#
#DS Binaries
$OUTPUTDIR/dslCommon.dll                         
$OUTPUTDIR/dslIPC.dll                            
$OUTPUTDIR/atVCLCommon.dll                       
$OUTPUTDIR/atSSI.dll                             

#BPL's
$BDSCOMMONDIR/BPL/dslVCLComponents.bpl          
$BDSCOMMONDIR/BPL/atVCLDataModules.bpl
)

for file in $files
 do
   echo $file
 done  

上面的一些变量是传递给脚本的参数。

删除上面文件列表中不相关的行并使其适合 for 循环的最佳方法是什么?

搜索时,我仅找到具有“完美”列表的示例,即没有内联注释、空行等。

更新:下面的答案表明列表可以包含注释和空行,因此不需要“清理”。

答案1

我不知道你说的“清理”上面的文件列表”到底是什么意思,但你应该做的第一件事是使用files 大批您创建的不是一些普通的files变量:

for file in "${files[@]}"
 do something
 done

此外,由于变量没有被引用,你的代码很容易出错。创建数组的工作原理如下:

files=(
# comments are just comments
a
a b c    # three separate entries
"a b c"  # one entry
# therefore
/my directory/    # two entries
"/my directory/"  # one entry

# empty line doesn't matter
""
# the above is an empty entry

# this won't fail with paths containing spaces etc.
"$SRC_DIR/../"*.txt
"$OUTPUTDIR/$OUTPUTFILENAME"
"$OUTPUTDIR/dslCommon.dll"
"$BDSCOMMONDIR/BPL/dslVCLComponents.bpl"
)

相关内容