2016-12-15 5 views
0

나는 작은 따옴표 나 큰 따옴표에 전달 된 매개 변수를 필요로하는 응용 프로그램을 실행하려고 해요 : 나는 스크립트에서이 작업을 실행하기 위해 노력하고있어인용 변수

bwa mem -R '@RG\tID:foo\tLB=foo\tPL=illumina\tPU=1234.1\tSM=bar'...

:

#!/usr/bin/bash 

var=foo_bar 
first=$(echo $var | cut -d '_' -f 1) 
second=$(echo $var | cut -d '_' -f 2) 

readgroup="@RG\tID:$first\tLB=HUM\tPL=illumina\tPU=1234.1\tSM=$second" 

echo \'$readgroup\' 

'@RG\tID:foo\tLB=HUM\tPL=illumina\tPU=1234.1\tSM=bar' 

나는 내 응용 프로그램 호출의 매개 변수로 사용하는 경우 17,451,515,

그러나 :

var=foo_bar 
first=$(echo $var | cut -d '_' -f 1) 
second=$(echo $var | cut -d '_' -f 2) 

readgroup="@RG\tID:$first\tLB=HUM\tPL=illumina\tPU=1234.1\tSM=$second" 

bwa mem -R \'$readgroup\' ... 

그것은 내가 뭘 잘못

\'@RG\tID:HUM-7\tLB=HUM\tPL=illumina\tPU=1234.1\tSM=HUM-7\'

으로 해석이야? 같은

답변

0

가되어야한다

readgroup="'@RG\tID:$first\tLB=HUM\tPL=illumina\tPU=1234.1\tSM=$second'" [with '' wrapping] 

readgroup="@RG\tID:$first\tLB=HUM\tPL=illumina\tPU=1234.1\tSM=$second" [without] 

중요한 것은 에코에 대한 -e 옵션을 사용하는 것입니다

echo -e $readgroup 
+0

감사합니다. 그러나 변수를 다른 프로그램의 입력으로 사용하려고합니다.이 경우'echo -e'를 어떻게 사용할 수 있습니까? – fugu

1
응용 프로그램은 따옴표에 대해 상관하지 않는다

[man echo보기]를; 그들은 껍질에서 끈을 보호하기 위해서만 사용됩니다. \t 실제로 문자 탭 문자로되어있는 경우

var=foo_bar 
IFS=_ read first second <<< "$var" 

readgroup="@RG\tID:$first\tLB=HUM\tPL=illumina\tPU=1234.1\tSM=$second" 

bwa mem -R "$readgroup" 

, 할당 문 대신 printf를 사용하는 것이 좋습니다.

printf -v readgroup '@RG\tID:%s\tLB=HUM\tPL=illumina\tPU=1234.1\tSM=%s' "$first" "$second"