使用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")"
答案 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