Ich verwende Windows Powershell. Ich möchte eine Nummer abrufen, die in einer Textdatei gespeichert ist, und sie mithilfe eines Shell-Skripts mit einer anderen Nummer vergleichen. Wenn ich verwende, wird $x=$(cat value.txt)
"Befehl nicht gefunden" angezeigt. Wenn ich verwende
cat vaue.txt
(
read num
)
if [ "$num" == '1' ]; then
echo "hello"
elif [ "$num" == '2' ] then
echo "world"
else
echo "hi"
fi
die Ausgabe enthält „hi“, unabhängig vom Wert von num. Der else-Teil wird ausgeführt, unabhängig vom Wert von num. Gibt es eine andere Möglichkeit? Ich habe auch alle anderen Möglichkeiten zum Lesen eines Werts aus einer Datei ausprobiert.
Antwort1
Powershell verfügt über integrierte Aliase für einige funktional gleichwertige Shell-Befehle. Wie Sie bereits festgestellt haben,KatzeBefehl funktioniert einwandfrei.
CommandType Name ModuleName
----------- ---- ----------
Alias cat -> Get-Content
Allerdings unterscheiden sich Powershell- und Shell-Skripte in der Syntax. Das Obige sollte mit demWennAnweisung, die stattdessen unten angezeigt wird.
cat value.txt | % {
if ($_ -eq '1') { "hello" }
elseif ($_ -eq '2') { 'world' }
else { 'hi' }
}