调用存储在 zsh 变量中的命令

调用存储在 zsh 变量中的命令

这很好用:

#!/usr/bin/env bash
cmd="ls -l"
${cmd}

但将其改为在 Z shell 下运行:

#!/usr/bin/env zsh
cmd="ls -l"
${cmd}

我得到:

./testing.sh:3: command not found: ls -l

为什么?我该如何让它在 zsh 下工作?我正在处理的完整脚本需要 zsh。

内置命令和外部命令都存在同样的问题;例如,用 替换ls -ltouch something出现同样的差异?这是怎么回事?谢谢!

答案1

您有两个选择:

  1. 使用数组而不是字符串(推荐)

    cmd=(ls -l)
    $cmd
    
  2. 将字符串拆分成单词

    cmd='ls -l'
    $=cmd
    

来源:什么是分词?为什么它在 shell 编程中很重要?

相关内容