1

Я использую Windows PowerShell. Я хочу получить число, которое хранится в текстовом файле, и сравнить его с каким-то другим числом, используя скрипт оболочки. Если я использую $x=$(cat value.txt) он говорит: "команда не найдена". Когда я использую

cat vaue.txt
(
read num
)
if [ "$num" == '1' ]; then
echo "hello"
elif [ "$num" == '2' ] then
echo "world"
else
echo "hi" 
fi

вывод содержит "привет" независимо от значения num. Остальная часть выполняется независимо от значения num. Есть ли другой путь? Я также попробовал все другие способы чтения значения из файла.

1 ответ1

0

Powershell имеет встроенные псевдонимы для некоторых функционально эквивалентных команд оболочки. Как вы обнаружили, команда cat работает отлично.

CommandType     Name                                               ModuleName
-----------     ----                                               ----------
Alias           cat -> Get-Content

Однако сценарии Powershell и shell отличаются по синтаксису. Вышеприведенное должно быть написано с использованием оператора if, показанного ниже.

cat value.txt | % {

    if ($_ -eq '1') { "hello" }
    elseif ($_ -eq '2') { 'world' }
    else { 'hi' }
}

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .