我坚持使用一个相当愚蠢的bash脚本:
CMD="get database" / #embedded,specific platform command
DATA="tree path Uo5 Uu7"
custom_command='grep -i Arte | awk -F '[:]' '{print $2}'
这就是我想要做的事情:
VAR=`$CMD "show data $DATA" | $custom_command` <--not working
VAR=`$CMD "show data $DATA" | grep -i Arte | awk -F '[:]' '{print $2}'` <--working
使用$ custom_command会破坏脚本。我如何使用$ custom_command到VAR?
我使用custom_command来避免反复使用相同的字符串。你能帮忙吗?
答案 0 :(得分:3)
您不希望将命令分配给bash
中的变量。你想写函数。
custom_command() {
grep -i Arte | awk -F '[:]' '{print $2}'
}
答案 1 :(得分:0)
你可以这样做:
custom_command="awk -F':' '/Arte/ {print \$2}'"
var=$(eval "$CMD 'show data $DATA' | $custom_command")
或者没有eval
:
custom_command="/Arte/ {print \$2}"
var=$("$CMD" 'show data $DATA' | awk -F':' "$custom_command")
答案 2 :(得分:0)
你需要做eval。类似的东西:
FINAL_CMD="$CMD show data $DATA | $custom_command"
VAR=$(eval $FINAL_CMD)
或者为了使其更适合您的问题,请尝试:
VAR=`$CMD "show data $DATA" | eval $custom_command`