Usando a saída de um comando em printf em ksh

1

Estou tentando realizar o seguinte:

printf "Are you sure you want to copy %s (y/n) ? (file bigger than 10 MB) " "$0"

Funciona bem, no entanto, gostaria de exibir o tamanho real do meu arquivo, fazendo algo como:

printf "Are you sure you want to copy %s (y/n) ? (file bigger than 10 MB : %s) " "$0" "ls -l $0 | awk {'print $5'}"

No entanto, eu tenho uma falha ao fazer isso. Eu acho que não é o jeito certo de fazer isso.

    
por user1058398 06.08.2014 / 14:42

3 respostas

2

printf "Are you sure you want to copy %s (y/n) ? (file bigger than 10 MB: %lu) " "$0" \
  "$(wc -c < "$0")"

analisar a saída de ls não é confiável (e você esqueceu o $(...) em torno dele).

    
por 06.08.2014 / 14:48
0

Eu suponho que isso esteja em alguma forma de shell como bash ou ksh. X é o arquivo (eu também supus que tenha espaço em seu nome)

printf "Are you sure you want to copy %s (y/n) ? (file bigger than 10 MB : %s) " "$x" \
   $(ls -ld -- "$x" | awk {'print $5'})

deve fazer.

Por favor, note a sintaxe $( some code ) .

    
por 06.08.2014 / 14:51
0

Se estiver em um sistema GNU, prefira usar stat :

printf "Are you sure you want to copy %s (y/n) ? (file bigger than 10 MB : %s) " "$0" \
    "$(exec stat -Lc '%s' -- "$0")"
  • -L faz stat seguir links simbólicos.
por 06.08.2014 / 15:24

Tags