Если я хочу выполнить команду с переменными в ней, мне всегда нужно сначала сохранить строку в переменной, а затем выполнить ее ...

Примере:

path_fasta="/home/xxx/yyy/zzz/qqq/"
name_fasta="CTA_Mix_DNA.fna"
path_outp"/some/Path/"

temp='find . -maxdepth 1 -not -name '$name_fasta' -not -name letsgo.sh -delete'
$temp

temp=$path_mothur'mothur #set.dir(output='$path_outp');summary.seqs(fasta='$path_fasta''$name_fasta')'
$temp

Как сделать это напрямую, без предварительного сохранения в temp ? Должно быть легко, но решения не нашел ...

3
Michael 19 Мар 2013 в 22:06

1 ответ

Лучший ответ

Вместо того:

temp='find . -maxdepth 1 -not -name '$name_fasta' -not -name letsgo.sh -delete'
$temp

... просто используйте:

find . -maxdepth 1 -not -name "$name_fasta" -not -name letsgo.sh -delete
5
Brian Cain 20 Мар 2013 в 01:52
Почему буквальные одинарные кавычки? Если значение переменной содержит одинарную кавычку, вы попали в ловушку. Почему бы просто не заключить переменную в двойные кавычки?
 – 
glenn jackman
20 Мар 2013 в 00:40