我正在尝试连接字符串,然后执行生成的字符串,但它不能正常工作,这是代码:
#!/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
,它会显示它应该显示给我的文件。为什么会这样?
答案 0 :(得分:2)
我想你想在这里做eval $c
。但我鼓励你避免用这样的字符串构建命令 - 如果你能找到一种更好的方法,它可能更容易理解和更安全。
答案 1 :(得分:1)
字符串保存数据; shell函数保存代码。
c () {
ls -alis | grep me
}