printf中的变量

时间:2015-04-10 14:02:59

标签: bash variables printf

使用bash我需要打印一些txt文件,实际上是另一个python脚本,包含一些在主脚本中移入变量(t)的标题

t="test"

printf "import pymol
cmd.load("${t}.pdb")" > ./script.py

生成的script.py看起来与我在主脚本中定义的完全相同的问题

import pymol
cmd.load("${t}.pdb")"

所以我怎样才能正确地过去正确的价值?'在结果script.py?

import pymol
cmd.load("test.pdb")"

3 个答案:

答案 0 :(得分:1)

您需要使用格式字符串中的占位符:

printf 'import pymol\ncmd.load("%s.pdb")' "$t"

%s指定将插入字符串值。在格式字符串中使用变量并不是一种好的做法;它们应作为printf的其他参数传递。

我还修改了引号并使用了换行符\n,而不是将字符串定义为两行。最好是双引号变量扩展,例如"$t"

在这种情况下,另一种选择是使用你可能更喜欢的heredoc:

t='test'
cat <<EOF >script.py
import pymol
cmd.load("${t}.pdb")
EOF

答案 1 :(得分:0)

t="test"

printf "import pymol 
cmd.load('$t.pdb')" > script.py

只需使用echo $smth,就可以按照$的价值执行此操作。注意写入文件时缺少./。我们通过添加一个点和一个斜杠来执行一个文件,但是我们不会这样写。

答案 2 :(得分:0)

t="test"

printf "import pymol 

cmd.load("$t.pdb")" > script.py