我想在变量中存储一个以后使用的命令(不是命令的输出,而是命令本身).

我有一个简单的脚本如下:

command="ls";
echo "Command: $command"; #Output is: Command: ls

b=`$command`;
echo $b; #Output is: public_html REV test... (command worked successfully)

然而,当我try 一些更复杂的东西时,它失败了.例如,如果我

command="ls | grep -c '^'";

输出为:

Command: ls | grep -c '^'
ls: cannot access |: No such file or directory
ls: cannot access grep: No such file or directory
ls: cannot access '^': No such file or directory

如何将这样一个命令(带有管道/多个命令)存储在变量中以供以后使用?

推荐答案

使用eval:

x="ls | wc"
eval "$x"
y=$(eval "$x")
echo "$y"

Linux相关问答推荐

AWK 命令根据另一列中相同的值获取列中的不同值

使用sed命令将记录中的字符串替换为DD-MMM-YYYY日期格式

如何使用 sed 和 date 命令替换和格式化字符串中的日期?

使用 PowerShell 删除重复行所需的时间比 WSL 长得多

我可以在不调用 shell 的情况下使用 popen() 吗?在 C++ 中

Qt会泄漏内存吗?

如何在 gcc 搜索路径上防止多个版本的 Boost?

CMake:处理静态库和共享库的正确方法

从另一个文件中的大文件中查找行的最快方法

我可以防止 gcc 优化器延迟内存分配吗?

Bash 更新 yaml 文件中的图像值

将 awk 输出保存到变量

如何优雅地退出 X11 事件循环?

如何让 PHP、Symlinks 和 __FILE__ 很好地协同工作?

让 sudo 和 nohup 一起工作

如何从 Linux 中的用户空间访问物理地址?

如何搜索文件并将它们压缩到一个 zip 文件中

rm 没有释放磁盘空间

grep 递归查找 Linux 上的特定文件类型

如何为 Git 命令设置自动完成功能?