linha de comando: gerando um processo

linha de comando: gerando um processo

Eu tenho um programa Perl que aceita um argumento (a intenção é alterar o diretório “cd”) sem gerar um processo filho.

$FPATH/pcd.pl permite ao usuário escolher entre vários possíveis candidatos a diretório, etc.

O truque é chegar ao diretório desejado sem ficar em um processo gerado. A seguir está a invocação que não consigo trabalhar (ksh shell):

. $FPATH/pcd.pl $*|ler dir . cd $dir

Não importa qual diretório real seja retornado para "$dir", o ".cd $dir" nunca chega ao diretório desejado. Por favor, avise. Obrigado.

Responder1

Não entendo muito bem sua linha de código; talvez tenha sido distorcido.

Minha abordagem seria um pouco diferente: primeiro, crie um alias que pegue a saída de um programa e faça um cd para isso:

alias mycd='cd $(select-dir)'

Em seguida, faça o programa imprimir o menu em stderr e a escolha em stdout, por exemplo assim:

#!/usr/bin/perl

use 5.010;
use strict;
use warnings;

my @entries = ('..', grep {-d} glob("*"));
for my $i (0..$#entries) {
        printf STDERR (" %2d: $entries[$i]/\n", $i);
}
$| = 1;
print STDERR ("cd to: ");
say($entries[<>]);

informação relacionada