【发布时间】:2015-06-17 18:30:34
【问题描述】:
我是 bash 的菜鸟,所以这很可能是语法错误,但我在搜索中找不到任何适合我的语法的东西。
从终端,运行find . -name "*g*"
结果
./.grepdir.sh.swp
./grepdir.sh
但是,运行 这个 bash 脚本 称为 grepdir.sh
#!/usr/bin/bash
startdir="$1";
pattern="$2";
find_cmd="find $startdir -name \"$pattern\"";
echo "$find_cmd";
cmd="$($find_cmd)";
echo "$cmd";
从终端作为grepdir.sh . "*g*" 导致:
[user@pc~/dir]$ grepdir.sh . "*g*"
find . -name "*g*"
[user@pc~/dir]$
表示 cmd 必须为空。但据我了解,存储在 find_cmd 中的字符串被执行,输出被捕获到 cmd,这意味着它不应该为空。我有什么误解,还是我的语法太糟糕了?
谢谢
【问题讨论】:
-
使用
cmd=$(bash -c "$find_cmd")似乎可以解决这个问题。但我不明白你的不工作的原因。