Bash 反勾号执行的错误使用?

Bash 反勾号执行的错误使用?,bash,backticks,Bash,Backticks,我试图通过从文本文件读取命令来运行该命令,但失败了。当我进入同一条线时,它正在工作,很难。令我惊讶的是,它甚至尝试执行move命令,但却收到一条错误消息,翻译为“未找到文件或目录”。很明显,这里的错误信息没有说实话。有人能解释一下吗 s39339@compute:~/spr/man/de$ head -n7 mkdoc|tail -n1 mv nutzer.1.gz ~/public_html/man/man1/ s39339@compute:~/spr/man/de$ `head -n7 mk

我试图通过从文本文件读取命令来运行该命令,但失败了。当我进入同一条线时,它正在工作,很难。令我惊讶的是,它甚至尝试执行move命令,但却收到一条错误消息,翻译为“未找到文件或目录”。很明显,这里的错误信息没有说实话。有人能解释一下吗

s39339@compute:~/spr/man/de$ head -n7 mkdoc|tail -n1
mv nutzer.1.gz ~/public_html/man/man1/
s39339@compute:~/spr/man/de$ `head -n7 mkdoc|tail -n1`
mv: Verschieben von „nutzer.1.gz“ nach „~/public_html/man/man1/“ nicht möglich: Datei oder Verzeichnis nicht gefunden
s39339@compute:~/spr/man/de$ ls
gzip  mkdoc  nutzer.1  nutzer.1.gz  nutzer.pod  rbsh
s39339@compute:~/spr/man/de$ mv nutzer.1.gz ~/public_html/man/man1/
s39339@compute:~/spr/man/de$
我这样做是为了学校,所以答案会很好。我们得到结果的方式并不重要,尽管我尝试的似乎没有必要。

波浪线“~”不是在反刻度内插值的

[已编辑]
相反,您应该能够使用:eval“$(head-n7mkdoc | tail-n1)”

`head-n7mkdoc | tail-n1`
被命令的输出替换,该命令的输出是
mv nutzer.1.gz~/public\u html/man/man1/
。然后将该输出解释为一个命令,
mv
命令

但它失败了,因为已经执行了tilde扩展<此时,代码>~不会替换为您的主目录;这只是一个平淡无奇的角色。就好像你曾试图执行死刑

'mv' 'nutzer.1.gz' '~/public_html/man/man1/'
出于同样的原因,您不能使用
$HOME
,或第二组反勾号,或任何其他动态构造。为此,您需要使用
eval
,或者将字符串传递给第二个shell

eval `head -n7 mkdoc|tail -n1`
bash -c "`head -n7 mkdoc|tail -n1`"

所以我可以用$HOME来代替我的itoops,我的意思是:eval“$(head-n7 mkdoc | tail-n1)”#应该工作我讨厌当我点击“回车”键时评论结束(输入)的方式:(