
我有一個 perl 程序,它接受一個參數(目的是更改目錄“cd”)而不產生子進程。
$FPATH/pcd.pl 允許使用者在許多可能的候選目錄等中進行選擇。
訣竅是到達所需的目錄而不留在生成的進程中。以下是我無法開始工作的呼叫(ksh shell):
。 $FPATH/pcd.pl $*|讀取目錄。 cd $目錄
無論什麼真實目錄回到“$dir”,“.cd $dir”都永遠不會到達所需的目錄。請指教。謝謝。
答案1
我不太明白你那裡的程式碼行;也許已經是亂碼了。
我的方法會有點不同:首先,創建一個別名,它獲取程式的輸出並為其製作一張 cd:
alias mycd='cd $(select-dir)'
然後讓程式將選單列印到 stderr 並將選擇列印到 stdout,例如如下所示:
#!/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[<>]);