我对bash完全不熟,所以这很可能是语法错误,但我在搜索中没有找到适用于我的语法的任何内容。
从终端运行以下命令:
结果为:
然而,运行名为
从终端运行以下命令:
find . -name "*g*"
结果为:
./.grepdir.sh.swp
./grepdir.sh
然而,运行名为
grepdir.sh
的此bash脚本。#!/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")
似乎可以解决这个问题。但我不明白为什么你的方法不起作用。 - tivn