У меня есть сценарий R, который выводит TRUE или FALSE. В R он использует добросовестный тип данных T/F, но когда я повторяю его возвращаемое значение в bash, кажется, что это строка, говорящая:
"[1] TRUE"
или
" [1] FALSE"
Им обоим предшествует [1]. Как и [0], это не опечатка. В любом случае, результатом этого является то, что когда я пытаюсь протестировать выходные данные этого Rscript для запуска последующего сценария, мне приходится сравнивать строки с «[1] TRUE», как показано ниже, вместо сравнения с «TRUE» или « 1", который кажется чище и лучше.
A=$(Rscript ~/MyR.r)
echo $A
if [ "$A" == "[1] TRUE" ]; then
bash SecondScript.sh
fi
Как заставить R либо выводить истинное логическое значение, либо Bash принимать выходную строку и преобразовывать ее в 0/1 для сравнения? То есть я бы лучше проверил на...
if [ $A == TRUE ];
, чем на
if [ "$A" == "[1] TRUE" ];
Это возможно, или я должен быть доволен этим, как оно есть, что работает?
* ОБНОВЛЕНИЕ *
Вот минимизированная версия Rscript, который генерирует это...
myinput <- TRUE #or FALSE
FunctionName <- function(test){
if (test == TRUE){
val <- TRUE
} else {
val <- FALSE
}
return(val)
}
FunctionName(myinput)