我有一个存储在变量中的命令。让我们假设变量$i
具有值:
cat -nT index.php |grep 'someregex'
Run Code Online (Sandbox Code Playgroud)
当我尝试通过键入执行上述变量$i
时失败,因为 shell 尝试将整个变量作为一个命令执行。我也尝试使用eval($i)
和添加$i
反引号。
如何让 shell$i
像执行命令一样执行?为什么它的工作方式不一样。
$i='echo hi'; $i
Run Code Online (Sandbox Code Playgroud)
是因为我不得不在单引号中进行某种修改吗?(因为你不能嵌套它们。)目前我的解决方案是
echo $i > /foo; . /foo
Run Code Online (Sandbox Code Playgroud)
但我不想为此创建一个文件,以后再删除它。
我的意思是“我在单引号中黑了我做了:
$i='cat index.php | grep -P '"'"'MYREGEXHERE'"'"
Run Code Online (Sandbox Code Playgroud)