我有一个小的bash脚本,通过使用关键字greps / awk段落。
但是在添加了额外的代码后:set var = "(......)"
它只打印一个空行而不是段落。
所以我想问一下是否有人知道如何正确地将awk输出传递给变量进行输出?
我的代码:
#!/bin/sh
set var = "(awk 'BEGIN{RS=ORS="\n\n";FS=OFS="\n"}/FileHeader/' /root/Desktop
/logs/Default.log)"
echo $var;
谢谢!
答案 0 :(得分:6)
使用command substitution捕获进程的输出。
#!/bin/sh
VAR="$(awk 'BEGIN{RS=ORS="\n\n";FS=OFS="\n"}/FileHeader/' /root/Desktop/logs/Default.log)"
echo "$VAR"
关于shell脚本的一些一般性建议:
答案 1 :(得分:3)
`COMMAND`
内,或者在一对括号前面加一个美元符号$(COMMAND)
。 set
,并且=
之前和之后不能有空格。试试这个:
var=$(awk 'BEGIN{RS=ORS="\n\n";FS=OFS="\n"}/FileHeader/' /root/Desktop/logs/Default.log)
echo $var
答案 2 :(得分:2)
你给我的想法是杀死一个进程:)。对你要杀的任何过程都只是铬。
试试这个:
VAR=$(ps -ef | grep -i chromium | awk '{print $2}'); kill -9 $VAR 2>/dev/null; unset VAR;
答案 3 :(得分:1)
任何时候你看到grep管道输入awk,你可以放弃grep。对于上述,
awk '/^password/ {print $2}'
awk可以轻松替换任何文本命令,如cut,tail,wc,tr等,特别是多个grep管道彼此相邻。即
grep some_co.mand | a | grep b ... to | awk '/a|b|and so on/ {some action}.
答案 4 :(得分:0)
尝试使用包装器模板变量创建来自vault / Hashicorp的变量,如下所示:
BUILD_PASSWORD=$(vault read secret/buildAccount| grep ^password | awk '{print $2}')
echo $BUILD_PASSWORD
您可以使用grep ^user