在unix shell脚本中执行来自字符串变量的命令

dm-*_*lev 2 unix shell

我在文件中有这个代码scr.sh:

#!/bin/sh
string='ps -e | less'
$string
Run Code Online (Sandbox Code Playgroud)

当我执行这个脚本时,它不起作用.为什么?我应该怎么做才能从shell脚本中的字符串变量执行命令?

Joh*_*ica 5

最好将命令存储在函数中而不是变量中.功能很棒.变量,完全没有.

string() {
    ps -e | less
}

string
Run Code Online (Sandbox Code Playgroud)

您可以使用eval执行具有重定向(>,<)和管道(|)的命令,但我强烈反对您不这样做.

eval "$string"    # please don't
Run Code Online (Sandbox Code Playgroud)