Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从unix shell脚本中的字符串变量执行命令_Shell_Unix - Fatal编程技术网

从unix shell脚本中的字符串变量执行命令

从unix shell脚本中的字符串变量执行命令,shell,unix,Shell,Unix,我在文件scr.sh中获得了此代码: #!/bin/sh string='ps -e | less' $string 当我执行这个脚本时,它不起作用。为什么?如何在shell脚本中从字符串变量执行命令?最好将命令存储在函数中,而不是变量中。功能非常好。变量,一点也不 string() { ps -e | less } string 您可以使用eval执行具有重定向的命令(,或者如果它不太难分叉,那么一个简单的bash-c$string就足够了。虽然这个方法不如函数好,但它仍然可以完

我在文件
scr.sh
中获得了此代码:

#!/bin/sh
string='ps -e | less'
$string

当我执行这个脚本时,它不起作用。为什么?如何在shell脚本中从字符串变量执行命令?

最好将命令存储在函数中,而不是变量中。功能非常好。变量,一点也不

string() {
    ps -e | less
}

string

您可以使用
eval
执行具有重定向的命令(
或者如果它不太难分叉,那么一个简单的
bash-c$string
就足够了。虽然这个方法不如函数好,但它仍然可以完成任务。我还应该提到,
bash-c$string
eval$string
一样糟糕。为什么不使用
eval
?只有在这种情况下才有效。请注意因为我真的需要从键盘上读取
字符串
,用它做一些事情,然后执行。
eval "$string"    # please don't