присвойте вывод c программы к переменной оболочки: маркерная ошибка

Я смог использовать --html аргумент man для открытия его в браузере, определенном переменной среды $BROWSER, таким образом:

BROWSER=google-chrome man ps --help

Я использую Fedora. Не уверенный, если это работает на Ваш дистрибутив, протестируйте и сообщите в комментариях.

2
10.10.2014, 20:19
2 ответа

Первые две строки, которые вы определили, используют $ (( команда )) Чтобы выполнить команду и захватить его вывод. Это должно быть $ ( команда ) . Ваше использование $ (( выражение )) Оценить математическое выражение правильное.

Кроме того, квадратная корневая линия должна быть

dvt=$(echo "sqrt($dvt)" | bc -l)

, а не

dvt=$((echo `sqrt($dvt) | bc -l`))

или даже

dvt=$(echo `sqrt($dvt) | bc -l`)

проблема с помощью команды Margen = может быть, вы проходите его поплавок как один из условий выражения.

1
27.01.2020, 22:13

Я бы предложил просто:

  • Извлечь в новый каталог
  • Если после извлечения новый каталог содержит ровно одну подкаталогу, то переместить все файлы внутри него на один уровень вверх и избавиться от исходного подкаталога.

По пути создание архива (дегтя, застежки -молнии, что угодно) без наличия всех членов архива внутри подкаталога является EVIL . Не знаю, зачем люди это делают!

-121--84628-

Да, exec builtin в конечном итоге использует одно из семейств системных вызовов exec * () . Как и выполнение команд в обычном режиме. Просто при использовании exec системный вызов fork () не используется для создания нового процесса, в результате чего новая команда заменяет оболочку.

-121--67353-

Я бы реструктурировал настройку a $ k на ассоциативный массив так:

    declare -a a
    for k in {1..4}  
    do  
        a[$k]=$((`./switch -N$i -r$j -n$num`))  
        sum=$((sum + a[$k]))  
    done  

Это позволило бы сделать массив a доступным после того, как он будет заполнен значениями из приведенного выше для цикла к другим петлям в вашем коде.

Эту строку далее вниз в последний для цикла также необходимо настроить так:

        dvt=$((dvt + (a[$k] - $avg)*(a[$k] - $avg)))  

Floats с $ (..))

Я не верю, что вы можете добавить floats с помощью нотации $ ((...)) . По крайней мере, когда я попробовал его, это не сработало:

$ echo $((0.10 + .20))
bash: 0.10 + .20: syntax error: invalid arithmetic operator (error token is ".10 + .20")

Для выполнения этих операций с поплавками в качестве токенов необходимо использовать bc или калькулятор, который может их выполнить.

$ echo "0.10 + .20" | bc
.30
1
27.01.2020, 22:13

Теги

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