2016-04-17 10 views
0

Ich kann viele Antworten finden, die echo, Rohre | und sed für diesen Zweck verwendet, aber ich möchte sie vermeiden. Also suche nach direkter Substitution.Ersatz env var in Zeichenkette Argument übergeben von der Befehlszeile

Ich möchte env var definieren und es innerhalb der Zeichenfolge wiederverwenden, die an das Befehlszeilenargument der Anwendung übergeben wird, d. H. Rscript -e '...'.
Unten ist, was ich ohne Erfolg versucht habe.

Rscript -e 'cat("hello\n")' 
#hello 
export ASD="HELLO!" 
Rscript -e 'cat("$ASD\n")' 
#$ASD 
Rscript -e 'cat("${ASD}\n")' 
#${ASD} 
Rscript -e 'cat("$(ASD)\n")' 
#$(ASD) 

Ich will nicht echo und | Rohre als mein eigentliches -e Argument Anwendung verwenden ist viel komplexer.

+0

Wenn es kompliziert ist, sollten Sie das Skript zuerst in eine Datei schreiben. – chepner

+1

Variablen ersetzen keine einfachen Anführungszeichen. Wäre ''cat (' '' '$ ASD' '' '' '' was du suchst? – rici

+0

Jemand stimmt ab, mit * unklar, was du fragst *. Ist das nicht beispielhaft dafür nicht klar? @rici sieht gut aus, wird sehen, ob es funktioniert. – jangorecki

Antwort

0
$ date > filename 
$ export filename=len 
$ cat 'fi'"$filename"'ame' 
Sun Apr 17 16:20:20 CEST 2016 
1

Neben fun with quotes, können Sie Positionsparameter verwenden können. Ihre Frage liefert keine Minimal, Complete, Verifiable Example, so dass ich nicht sicher sein kann, dass dies Ihren Anforderungen entspricht.

bash-4.3$ bash -c 'set -; echo "${0^^} ... ${1/o/0}"' hello world 
HELLO ... w0rld 
Verwandte Themen