在之前的问题中有一些提到逃避空白区域的提及,但我没有,或者可以解决如何适用于我的情况所以我只是想道歉,如果我是双重发布。这也是我认为非常简单,但我真的很喜欢bash,一般的编程实际上......
无论如何,我正在尝试创建以下小脚本:
#!/bin/bash
for i in $( zfs list -o name | grep data/ ) ; do
echo $i
done
但其中一条输出线包含一个空白区域,因此正在两条独立的线条上打印。我需要弄清楚如何正确处理它,以便我可以继续使用脚本并使用它来缩短我制作的另一个脚本:
#!/bin/bash
zfs snapshot data/backups@initial
zfs snapshot data/bin@initial
zfs snapshot data/downloads@initial
zfs snapshot data/movies@initial
zfs snapshot data/music@initial
zfs snapshot data/pictures@initial
zfs snapshot data/stand\ up@initial
zfs snapshot data/thumbs@initial
zfs snapshot data/tv@initial
zfs snapshot data/vids@initial
echo "Snapshots Created"
echo ""
echo "Copying Backups"
zfs send data/backups@initial | pv -tpreb -s 48M | ssh 192.168.61.100 zfs recv -dF data
echo "Backups Copied"
echo ""
echo "Copying Bin"
zfs send data/bin@initial | pv -tpreb -s 46K | ssh 192.168.61.100 zfs recv -dF data
echo "Bin Copied"
echo ""
echo "Copying Downloads"
zfs send data/downloads@initial | pv -tpreb -s 31M | ssh 192.168.61.100 zfs recv -dF data
echo "Downloads Copied"
echo ""
echo "Copying Movies"
zfs send data/movies@initial | pv -tpreb -s 490496M | ssh 192.168.61.100 zfs recv -dF data
echo "Movies Copied"
echo ""
echo "Copying Music"
zfs send data/music@initial | pv -tpreb -s 66560M | ssh 192.168.61.100 zfs recv -dF data
echo "Music Copied"
echo ""
echo "Copying Pictures"
zfs send data/pictures@initial | 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\ up@initial | 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/thumbs@initial | pv -tpreb -s 45K | ssh 192.168.61.100 zfs recv -dF data
echo "Copied Thumbs"
echo ""
echo "Copying TV"
zfs send data/tv@initial | pv -tpreb -s 787456M | ssh 192.168.61.100 zfs recv -dF data
echo "Copied TV"
echo ""
echo "Copying Vids"
zfs send data/vids@initial | 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 :(得分:1)
当您需要保留空格时,始终引用扩展
for i in "$( zfs list -o name | grep data/ )" ; do
echo "$i"