Bash脚本中带有参数的麻烦调用程序

时间:2019-08-19 16:14:05

标签: bash shell whitespace quotes

问题

我有一些代码,该代码首先遍历每行具有文件夹路径的文件,以确保它们正确(它确实通过了,并且我也知道这些是有效路径),然后尝试将其传递给程序{{ 1}},但出错。

问题似乎完全取决于我如何创建或使用borg(您可以将其作为第一个回显),但是我不确定如何解决。

输入

folderList

错误输出

/media/sf_D_DRIVE/VirtualMachines Backups/
/media/sf_C_DRIVE/Websites/47/sln/site/App_Data/

代码

"/media/sf_D_DRIVE/VirtualMachines Backups/" "/media/sf_C_DRIVE/Websites/47/sln/site/App_Data/"

"/media/sf_D_DRIVE/VirtualMachines: [Errno 2] No such file or directory: '"/media/sf_D_DRIVE/VirtualMachines'
Backups/": [Errno 2] No such file or directory: 'Backups/"'
"/media/sf_C_DRIVE/Websites/47/sln/site/App_Data/": [Errno 2] No such file or directory: '"/media/sf_C_DRIVE/Websites/47/sln/site/App_Data/"'

1 个答案:

答案 0 :(得分:1)

通过使用数组传递参数并简化条件测试,类似的方法应该可以更好地工作:

while read -r line
do
    if [ -f "$line" ] || [ -d "$line" ]; then
      folderList+=( "$line" )
    else
      exit 1
    fi
done < "$2"

echo "${folderList[@]}" #gets past here successfully

borg create -s --progress "$1::${dateString}" "${folderList[@]}"
相关问题