Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 在``命令中展开一个变量_Bash - Fatal编程技术网

Bash 在``命令中展开一个变量

Bash 在``命令中展开一个变量,bash,Bash,我找不到我正在做的事情的确切参考资料 我有以下脚本,它不会在命令中展开变量: #!/bin/bash name="my name" `convert -pointsize 250 -font /usr/share/fonts/truetype/msttcorefonts/impact.ttf -fill black -draw 'text 330,900 "$name"' tag.jpg name_my.jpg` 这将导致图像的文本为$name,而不是name的内容 实际上,我需要从文件中读

我找不到我正在做的事情的确切参考资料

我有以下脚本,它不会在命令中展开变量:

#!/bin/bash

name="my name"
`convert -pointsize 250 -font /usr/share/fonts/truetype/msttcorefonts/impact.ttf -fill black -draw 'text 330,900 "$name"' tag.jpg name_my.jpg`
这将导致图像的文本为$name,而不是name的内容

实际上,我需要从文件中读取行并在每个名称上运行命令,因此我真正的脚本是(有相同的问题):

arr=(`cat names.txt`)

对于((i=0;i您的问题是单引号(
'
)而不是反引号。因为
$name
在它们内部,所以它不会被展开。相反,您应该使用双引号,并且可以像这样转义内部引号:

`convert -pointsize 250 -font /usr/share/fonts/truetype/msttcorefonts/impact.ttf -fill black -draw "text 330,900 \"$name\"" tag.jpg name_my.jpg`

您的问题是单引号(
'
)而不是反引号。因为
$name
在它们里面,所以它不会被展开。相反,您应该使用双引号,并且可以像这样转义内部引号:

`convert -pointsize 250 -font /usr/share/fonts/truetype/msttcorefonts/impact.ttf -fill black -draw "text 330,900 \"$name\"" tag.jpg name_my.jpg`

你有逃跑的问题。 请使用带反斜杠的正确转义,或者确保$arg不受单引号的“保护”。 e、 g

为了更好地了解发生了什么,尝试将问题分解为多个较小的问题。 e、 g.在convert中使用“draw”命令之前,创建包含所有展开的“draw”命令

name="my name"
draw="text 330, 900 '"${name}"'"
convert -pointsize 250 -fill black -draw "${draw}" tag.jpg name_my.jpg

你有逃跑的问题。 请使用带反斜杠的正确转义,或者确保$arg不受单引号的“保护”。 e、 g

为了更好地了解发生了什么,尝试将问题分解为多个较小的问题。 e、 g.在convert中使用“draw”命令之前,创建包含所有展开的“draw”命令

name="my name"
draw="text 330, 900 '"${name}"'"
convert -pointsize 250 -fill black -draw "${draw}" tag.jpg name_my.jpg

我知道我的问题是一个基本问题,但出于某种原因,只是将你的解决方案只生成“\”作为文本我知道我的问题是一个基本问题,但出于某种原因,只是将你的解决方案只生成“\”作为文本在你的示例中运行
convert
,根本不需要反勾号。它是否显示了我多久没有碰过它了他的?:)这是我在大学里被教写Bash的方式……我在某个地方读到它支持
Bourne Shell
…在你的例子中运行
convert
,你根本不需要反勾号。它是否显示了我在大学里写Bash有多久了?:)这是我在大学里被教写Bash的方式。。。我在某个地方读到它支持
Bourne Shell
。。。