【发布时间】:2021-09-08 14:21:49
【问题描述】:
我有一个名为“test.sh”的 shell 脚本:
#!/usr/bin/env bash
echo "echo 'hello';"
当我运行 ./test.sh 时,它显然会给出以下输出:
回声“你好”;
现在这个输出本身也是一个有效的 shell 语句。如果我将此行复制并粘贴到外壳上并按回车键,它会说
你好
到目前为止一切顺利。
但是我想一步到位,所以我尝试了这个:
$(./test.sh)
但是我现在得到:
'你好';
以防万一,我使用的是 macOS 10.15.6 Catalina,它默认使用 zsh shell。我在 Linux 上使用 bash 进行了同样的尝试,结果相同。
为了以防万一,我也尝试了$('./test.sh') 或$("./test.sh"),但显然没有区别。
对此可能有一些简单的解释和解决方案,但我看不到。我做错了什么?
(编辑)也许这两个回声令人困惑,假设我的 test.sh 脚本包含以下内容:
echo "ls *.txt;"
如果我现在做./test.sh 我会得到
ls *.txt;
如果我将它复制并粘贴到 shell 上,它会按预期显示所有 .txt 文件。
但是,如果我这样做 $(./test.sh) 我会得到:
ls: *.txt;: 没有这样的文件或目录
将 test.sh 脚本输出的任何内容作为 shell 命令行执行的正确语法是什么?
【问题讨论】:
标签: bash shell terminal command execution