连接简单的字符串与shell出错?

时间:2014-04-03 15:38:36

标签: bash shell grep ls

我正在尝试连接字符串,然后执行生成的字符串,但它不能正常工作,这是代码:

    #!/bin/bash
    c="ls -alis"
    c="$c | grep me"
    echo $c
    $c

它会打印ls -alis | grep me,但它不会打印任何带有字符串'me'的文件,它会给我这个错误:

ls: |: No such file or directory
ls: grep: No such file or directory
ls: u1920477: No such file or directory

但是,如果我直接在终端上输入ls -alis | grep me,它会显示它应该显示给我的文件。为什么会这样?

2 个答案:

答案 0 :(得分:2)

我想你想在这里做eval $c。但我鼓励你避免用这样的字符串构建命令 - 如果你能找到一种更好的方法,它可能更容易理解和更安全。

答案 1 :(得分:1)

字符串保存数据; shell函数保存代码。

c () {
    ls -alis | grep me
}