espaço em branco na linha de comando do ZFS

2

Descobri que o espaço em branco parece ser significativo nos comandos do ZFS, mas aparentemente apenas sob algumas condições. Por exemplo, os dois comandos a seguir funcionam:

root@grandidier:~# zfs list -t snap -r tank/srv 
NAME                  USED  AVAIL  REFER  MOUNTPOINT
tank/srv@initial     4.22G      -  2.45T  -
tank/srv@2018-01-09   106G      -  3.40T  -
tank/srv@2018-01-14  50.0M      -  3.27T  -
tank/srv@2018-01-17  48.8M      -  3.16T  -
tank/srv@2018-01-19  56.9M      -  3.09T  -
tank/srv@2018-01-30  48.6M      -  2.72T  -
tank/srv@2018-02-12   104M      -  2.49T  -
root@grandidier:~# zfs list -t snap  -r tank/srv 
NAME                  USED  AVAIL  REFER  MOUNTPOINT
tank/srv@initial     4.22G      -  2.45T  -
tank/srv@2018-01-09   106G      -  3.40T  -
tank/srv@2018-01-14  50.0M      -  3.27T  -
tank/srv@2018-01-17  48.8M      -  3.16T  -
tank/srv@2018-01-19  56.9M      -  3.09T  -
tank/srv@2018-01-30  48.6M      -  2.72T  -
tank/srv@2018-02-12   104M      -  2.49T  -
root@grandidier:~#

(Nota: adicionado espaço entre "... snap -r") No entanto, se eu colocar o comando em um pipe e usar substituição de carrapato para obter o resultado do comando, recebo:

root@grandidier:~# export NEW='zfs list -t snap -r tank/srv | tail -1 | awk '{print }''; echo $NEW
tank/srv@2018-02-12
root@grandidier:~# export NEW='zfs list -t snap  -r tank/srv | tail -1 | awk '{print }''; echo $NEW
cannot open ' -r': invalid dataset name
cannot open 'tank/srv': operation not applicable to datasets of this type

root@grandidier:~# 

Acho isso desconcertante e desconcertante. Eu acho que posso contornar o problema criando meus scripts sem nenhum espaço em branco extra, mas eu realmente gostaria de saber por que isso está acontecendo em primeiro lugar.

Isso está ligado
Ubuntu 16.04 LTS (atualizado)
bash 4.3.48
ZFS 0.6.5.11-1ubuntu3

Editar: para responder aos três primeiros comentários (e reter a formatação do código)

root@grandidier:~/bin# printf '%q\n' "$IFS"
$' \t\n'

Parece que a sintaxe $ (...) também está sujeita a este problema (veja o próximo comentário).

Não tenho certeza de onde algo pode parecer um espaço, mas parece que esse é o problema. Copiei esta string para / de um documento do Google e talvez tenha feito algum tipo de tradução nos espaços. Se eu adicionar o espaço extra no google doc e copiar / colar para um xterm, o erro será reportado. Se eu editar o comando (na linha de comando) e excluir / inserir novamente os dois espaços, o comando funcionará sem o erro.

O Google Docs não é um bom editor de programação. (Eu não estou realmente usando dessa forma, mas sim para fazer anotações e salvar cópias de comandos enquanto eu trabalho através de algo. Eu provavelmente deveria me ater a algo como vim para isso.)

    
por HankB 13.02.2018 / 16:40

0 respostas