Эхо и датама sh в одной строке - PullRequest
0 голосов
/ 08 февраля 2020

Я работаю в сценарии Bash и пытаюсь поместить некоторые данные в файл:

У меня есть следующий код:


    if [[ -f ./myfile ]]; then
        echo "$i option:$i" datamash mean 1 sstdev 1 < ./${file} >> ./myfile
    else
        echo "$i option:$i" datamash mean 1 sstdev 1 < ./${file} > ./myfile
    fi

Код выполняется, но файл выглядит так:


    1 option:1 datamash mean 1 sstdev 1

И я хочу, чтобы он выглядел так:


    1 option:1 1234    5678

Как я могу это сделать?

1 Ответ

0 голосов
/ 09 февраля 2020

То, что вы пытаетесь просто передать datama sh et c. в качестве дополнительных аргументов echo, когда это фактически команда, которую вы хотите выполнить. Я бы сделал что-то вроде

(echo "$i option:$i"; datamash mean 1 sstdev 1 < ./${file}) >> ./myfile

, которое перенаправит вывод echo и datamash на ./myfile все в одном go. Обратите внимание на точку с запятой, разделяющую две разные команды.

Как отмечено в комментариях, нет необходимости в проверке материала if, чтобы увидеть, существует ли ./myfile или нет; >> создаст его при необходимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...