2011-12-02 37 views
1

在前面的問題中有幾個提到轉義空格,但沒有我可以或可以解決如何適用於我的情況,所以我只想道歉如果我是雙重發布。另外這是我覺得非常簡單,但我真的很新的bash的,一般實際以及編程...在簡單的bash腳本中轉義空格

無論如何,我試圖創建下面的小腳本:

#!/bin/bash 
    for i in $(zfs list -o name | grep data/) ; do 
    echo $i 
    done 

不過的一個輸出行包含一個空白區域,因此正在打印在兩條單獨的行上。我需要工作,如何把它正確地處理,所以我可以用腳本繼續並用它來縮短另一個腳本我做:

#!/bin/bash 
zfs snapshot data/[email protected] 
zfs snapshot data/[email protected] 
zfs snapshot data/[email protected] 
zfs snapshot data/[email protected] 
zfs snapshot data/[email protected] 
zfs snapshot data/[email protected] 
zfs snapshot data/stand\ [email protected] 
zfs snapshot data/[email protected] 
zfs snapshot data/[email protected] 
zfs snapshot data/[email protected] 
echo "Snapshots Created" 
echo "" 
echo "Copying Backups" 
zfs send data/[email protected] | pv -tpreb -s 48M | ssh 192.168.61.100 zfs recv -dF data 
echo "Backups Copied" 
echo "" 
echo "Copying Bin" 
zfs send data/[email protected] | pv -tpreb -s 46K | ssh 192.168.61.100 zfs recv -dF data 
echo "Bin Copied" 
echo "" 
echo "Copying Downloads" 
zfs send data/[email protected] | pv -tpreb -s 31M | ssh 192.168.61.100 zfs recv -dF data 
echo "Downloads Copied" 
echo "" 
echo "Copying Movies" 
zfs send data/[email protected] | pv -tpreb -s 490496M | ssh 192.168.61.100 zfs recv -dF data 
echo "Movies Copied" 
echo "" 
echo "Copying Music" 
zfs send data/[email protected] | pv -tpreb -s 66560M | ssh 192.168.61.100 zfs recv -dF data 
echo "Music Copied" 
echo "" 
echo "Copying Pictures" 
zfs send data/[email protected] | pv -tpreb -s 6114M | ssh 192.168.61.100 zfs recv -dF data 
echo "Pictures Copied" 
echo "" 
echo "Copying Stand Up" 
zfs send data/stand\ [email protected] | pv -tpreb -s 13.312M | ssh 192.168.61.100 zfs recv -dF data 
echo "Stand Up Copied" 
echo "" 
echo "Copying Thumbs" 
zfs send data/[email protected] | pv -tpreb -s 45K | ssh 192.168.61.100 zfs recv -dF data 
echo "Copied Thumbs" 
echo "" 
echo "Copying TV" 
zfs send data/[email protected] | pv -tpreb -s 787456M | ssh 192.168.61.100 zfs recv -dF data 
echo "Copied TV" 
echo "" 
echo "Copying Vids" 
zfs send data/[email protected] | pv -tpreb -s 11k | ssh 192.168.61.100 zfs recv -dF data 
echo "Vids Copied" 

我要被切割到這一點更短的劇本,但我需要最初的位是第一位。我希望我應該能夠自己找出其他的東西

好的我已經稍微將它改爲while語句,以便我能夠處理進一步的ZFS命令,否則當我嘗試處理它時,我無法處理它根據評論處理每條輸出行。這是一個長期的命令,顯然不起作用。

反正讓我有:

zfs list -o name | grep data/ | while read i; 

但同樣我留下的空白問題...我怎麼會輪得到那一個?

+0

哪條線路?哪個輸出?爲什麼它的輸出不會忽略空格呢? – hovanessyan

回答

1

始終引用擴展,當你需要的空白被保留

for i in "$(zfs list -o name | grep data/)" ; do 
    echo "$i" 
+0

HAHA很簡單。我嘗試引用所有內容 - 在不同的引號和''中引用echo,用引號和''引用擴展。沒想到引用擴張的原因。謝謝! :) – belim