Я следующий сценарий Баш, в котором R скрипт называетсяВозвращаясь аргумент из R колотить
#!/bin/bash
declare -x a=33
declare -x b=1
declare -x c=0
Rscript --vanilla MWE.R $a $b $c
echo $a $b $c
Я хочу, чтобы изменить переменные Баш в R сценарии и вернуть их измененные значения в сценарии Баш потому что я передаю измененные переменные где-то еще. R сценарий
#!/usr/bin/env Rscript
args = commandArgs(trailingOnly=TRUE)
Rb = as.numeric(args[2])
Rc = as.numeric(args[3])
Rb = Rb + 1
Rc = Rc + 1
args[2]=Rb
args[3]=Rc
print(c(args[1],args[2],args[3]))
Однако выход print
и echo
соответственно являются:
[1] "33" "2" "1"
33 1 0
, который показывает, что новые значения не передаются от R колотить. Что я делаю не так?
Это был не мой первоначальный вопрос, но я не могу найти способ манипулировать результатами массива - я могу изменить вопрос если это лучше. Мне нужно проверить, если 'c' равно 1, но все, что я пытался преобразовать вывод в целое число, потерпело неудачу (и я попытался с вашего первого ответа!). Похоже, что я пытаюсь использовать кавычки вокруг результатов, чтобы не мешать дальнейшим манипуляциям и даже что-то вроде 'c = $ {RESULT [3]} | sed "s/\" // g "' не помогает. В принципе, 'c' всегда кажется' '1" ', но никогда' 1'. – SnowFrog
ОК, чего вы пытаетесь достичь? арифметическая манипуляция будет внутри сценария bash? – klashxx
, если 'c' is' "1" "Я хочу, чтобы иметь возможность использовать его в качестве числа для большего количества вычислений в сценарии bash, но все, что я пытаюсь преобразовать в числовой например, среди многих других 'c = $ {RESULT [3]} | sed" s/\ "// g" ', это не работает. Он считается персонажем (я думаю) независимо от того, что я делаю. – SnowFrog