簡體   English   中英

bash:用於命令替換的變量中的pipe-character

[英]bash: pipe-character in variable for command-substitution

可以請有人解釋一下,為什么這不起作用?

#!/bin/bash
cmd="ps aux | grep -v grep"
cnt=$($cmd)

我從ps得到一個錯誤。

error: garbage option

Usage:
  ps [options]
.....

“ps aux”只能正常 - 但不能使用任何其他管道命令。

謝謝!

使用函數存儲管道命令更好更安全:

unset cmd cnt

cmd() {
   ps aux | grep -v grep
}

並在命令替換中使用它:

cnt="$(cmd)"

有關在變量中存儲命令行的信息,請參閱BASH FAQ

要執行變量$cmd的內容,您必須使用eval

cnt=$(eval $cmd)

請使用此命令: -

cmd = ps aux | grep -v grep ps aux | grep -v grep

當我們想要使用其他命令的o / p時,我們需要使用actute(`)而不是雙引號(“)

謝謝

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM