Цикл for внутри bash-скрипта не работает с nohup

Вы можете использовать Test-Connection для этого. Вот один из способов, с небольшими изменениями, чтобы получить дополнительную информацию, которую вы хотите:

Test-Connection -ComputerName $servers -Delay 1 -Count 60 |
    Add-Member -MemberType NoteProperty -Name Date -Value (Get-Date) -PassThru |
    Add-Member -MemberType NoteProperty -Name Status -Value $(if($_.ResponseTime -gt 5){"Failed"}else{"Succeeded"}) -PassThru

Это будет пинговать каждый сервер в $servers один раз в секунду в течение 60 секунд и выводить стандартные объекты с двумя новыми свойства: Date (datetime of ping) и Status (удалось или не удалось?)

Вы можете их захватить, отобразить на экране или отправить в файл. Например, чтобы записывать данные, сохраняя их в CSV, вы можете просто добавить следующее:

| Export-Csv .\ping.csv

CSV будет содержать больше информации, чем вам нужно, так что вы можете

EDIT: отображение пользовательских свойств

. Чтобы просмотреть пользовательские свойства в консоли, выполните следующие действия: , добавьте следующее:

| Format-Table PsComputerName, Date, ResponseTime, Status

0
задан Skeptical Khan 21 January 2019 в 06:35
поделиться

1 ответ

Вот рефакторинг, который удаляет повторяющийся код и делает ваш скрипт совместимым с sh в качестве приятного бонуса.

#!/bin/sh

while read num seed; do
    sed "s/seed=0/seed=$seed/" input >"input$num"
    ./compiled_code <"input$num" > "output$num"
    rm "input$num"
done <<____HERE
    1 100
    2 200
    3 300
    : etc
____HERE

Если, как кажется, ваши начальные значения полностью предсказуемы, то sh -совместимая замена для вашего цикла for состоит в использовании внешней утилиты, такой как seq (хотя это не совсем POSIX либо).

for num in $(seq 1 20); do
    sed "s/seed=0/seed=${num}00/" input >"input$num"
    ./compiled_code <"input$num" > "output$num"
    rm "input$num"
done
0
ответ дан tripleee 21 January 2019 в 06:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: