linux - shell 脚本 : parse blank spaces correctly

标签 linux shell ubuntu

在下面的代码中,我期待这样的输出:

Transmission_Downloads/The.Last.Man.On.Earth.S02E04.HDTV.x264-KILLERS[ettv]/Torrent-Downloaded-from-ExtraTorrent.cc.txt
Transmission_Downloads/Fargo.S02E01.HDTV.x264-KILLERS[ettv]/Torrent-Downloaded-from-ExtraTorrent.cc.txt
Transmission_Downloads/Nightwish - Showtime Storytime (2013) 1080p 5.1/SEMEAR.txt

但我得到的是这个

Transmission_Downloads/The.Last.Man.On.Earth.S02E04.HDTV.x264-KILLERS[ettv]/Torrent-Downloaded-from-ExtraTorrent.cc.txt
Transmission_Downloads/Fargo.S02E01.HDTV.x264-KILLERS[ettv]/Torrent-Downloaded-from-ExtraTorrent.cc.txt
Transmission_Downloads/Nightwish
-
Showtime
Storytime
(2013)
1080p
5.1/SEMEAR.txt

我应该如何让我的 shell 脚本正确解析文件和文件夹名称上的空格?谢谢!

#!/bin/bash

#opcao -s nao mostra o texto na tela
echo "Digite sua senha"
read -s answer

root_folder="/home/pi/"
user="pi"
server="*****"
local_folder="/home/dellcloud2"

#Colocar aqui os paths dos arquivos que deseja puxar
array=(
    "Transmission_Downloads/The.Last.Man.On.Earth.S02E04.HDTV.x264-KILLERS[ettv]/Torrent-Downloaded-from-ExtraTorrent.cc.txt"
    "Transmission_Downloads/Fargo.S02E01.HDTV.x264-KILLERS[ettv]/Torrent-Downloaded-from-ExtraTorrent.cc.txt"
    "Transmission_Downloads/Nightwish - Showtime Storytime (2013) 1080p 5.1/SEMEAR.txt"
)
for i in ${array[@]}; do
    #sshpass -p $answer rsync -aP $user@$server:$root_folder$i $local_folder
    echo $i
done

最佳答案

您需要使用 "${array[@]}" 来保留空格。数组周围的引号加上通配符 @ 共同实现了这一点。

这也适用于位置参数,即 "$@" 为您提供命令行参数数组,并在给定时正确引用。

关于linux - shell 脚本 : parse blank spaces correctly,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33308980/

相关文章:

c++ - 如何放大 'free memory'

ubuntu - 更改 ubuntu 终端的上下箭头

c# - 如何将项目添加到 Windows Shell(右键单击)?

java - 从 Java 调用带有重定向的 bash 脚本

linux - 在 Linux 上使用 PSFTP

windows - 在 git 中查找本地 repo 和 remote repo 之间的差异

linux - 检查数组元素是否在文件中

android - Ubuntu 上的 Charles 代理问题

linux - linux 如何在单个目录中查找未修改的文件

linux - Chrome 没有通过 Jenkins 启动 Selenium