![Shell 脚本无法执行传递的命令作为输入](https://linux22.com/image/1442739/Shell%20%E8%84%9A%E6%9C%AC%E6%97%A0%E6%B3%95%E6%89%A7%E8%A1%8C%E4%BC%A0%E9%80%92%E7%9A%84%E5%91%BD%E4%BB%A4%E4%BD%9C%E4%B8%BA%E8%BE%93%E5%85%A5.png)
我正在尝试从脚本执行命令但无法执行它。
脚本:command.sh
#!/bin/bash
a=$1
b=$2
echo "a=$a"
echo "b=$b"
`$a | $b`
执行命令:
bash-3.2$./command.sh“tar cvf-DIR”“压缩-c>/export/home/tceng/Desktop/temp/TestExtractUtility/tem/DIR.tar.Z”
输出:
./command.sh “tar cvf - DIR” “压缩-c> /export/home/tceng/Desktop/temp/TestExtractUtility/tem/DIR.tar.Z”
a=tar cvf-DIR
b=压缩-c >/export/home/tceng/Desktop/temp/TestExtractUtility/tem/DIR.tar.Z
/export/home/tceng/Desktop/temp/TestExtractUtility/tem/DIR.tar.Z: 已经有 .Z 后缀 - 无变化 tar: DIR: 没有此文件或目录 bash-3.2$
{注意:要求是完整传递两个命令,不要修改或在脚本中添加逻辑}。
命令直接从提示符运行。我认为 > 运算符存在问题
您能就此提出一些建议吗?
谢谢,阿尼尔
答案1
删除反引号。这对我来说似乎有效。这是你想要的吗?
#!/bin/sh
a=$1
b=$2
echo "a=$a"
echo "b=$b"
$a | $b