ich das folgende Bash-Skript haben, in dem ein R-Skriptein Argument von R Rückkehr bash
genannt wird#!/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
Ich möchte die bash Variablen in der R-Skript ändern und ihre geänderten Werte in der Bash-Skript zurückgeben weil ich dann die modifizierten Variablen woanders übergebe. Das Skript ist 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]))
jedoch der Ausgang des print
echo
und jeweils sind:
[1] "33" "2" "1"
33 1 0
die zeigt, dass die neuen Werte werden nicht aus R weitergegeben einzuschlagen. Was mache ich falsch?
Das war nicht in meiner ersten Frage, aber ich kann nicht einen Weg zu manipulieren, um die Ergebnisse des Arrays finden - ich die Frage ändern wenn es das Beste ist. Ich muss testen, ob 'c 'gleich 1 ist, aber alles, was ich versucht habe, die Ausgabe in eine Ganzzahl zu konvertieren, ist fehlgeschlagen (und ich habe es versucht, seit Sie zuerst geantwortet haben!). Es sieht so aus, als ob ich die Anführungszeichen um die Ergebnisse herum versuche, mich von jeder weiteren Manipulation abzuhalten und sogar etwas wie 'c = $ {RESULT [3]} | sed "s/\" // g "' hilft nicht. Grundsätzlich scheint "c" immer "1" zu sein, aber nie "1". – SnowFrog
OK, was versuchst du zu erreichen? Ich meine, alle die arithmetische Manipulation wird innerhalb des Bash-Skripts sein? – klashxx
Wenn 'c' ist' "1" 'Ich möchte dann in der Lage sein, es als eine Zahl für weitere Berechnungen im Bash-Skript zu verwenden, aber was auch immer ich versuche, es in eine Zahl zu konvertieren zB unter vielen anderen 'c = $ {RESULT [3]} | sed" s/\ "// g" ', es funktioniert nicht. Es wird als ein Charakter betrachtet (ich denke), egal was ich tue. – SnowFrog