Ich probiere die Fisch-Shell, aus Zsh und Bash kommen. Ich vermisse den Positionsparameter $_
schmerzhaft und versuche, ihn mit einer Funktion zu imitieren.Wie Variablen in Fisch zu bewerten
Fisch enthält seine Befehlshistorie in einem $history
Array, wobei $history[1]
die vorherige Zeile in der Geschichte ist, $history[2]
ist die davor, und so weiter.
Ich versuche, diese Variable zu bewerten und das letzte Wort wie dieses
ls -al
echo $history[1] | awk '{print $NF}' // Prints -al
ich versucht habe, entpacken Sie es in einer Funktion wie dieser
function \$_ --description 'Fish-patch for the $_ positional parameter'
echo $history[1] | awk '{print $NF}'
end
setzen Aber es funktioniert nicht ganz so erwartet. Der Aufruf von $_
selbst funktioniert wie erwartet;
ls -al
$_
Es druckt -al
. Aber wenn $_
als Parameter an eine Funktion übergeben wird;
ls -al
echo $_
Es druckt echo
. Ich vermute, dass es etwas mit der $_
-Funktion zu tun hat, die in einer Subshell oder etwas bewertet wird, weiß ich wirklich nicht.
Was ist hier falsch? Warum funktioniert echo $_
nicht wie erwartet?