Linux AWK命令返回0
使用以下代码运行AWK命令时Linux AWK命令返回0,linux,awk,Linux,Awk,使用以下代码运行AWK命令时 awk -F: 'BEGIN{OFS=":"} ($2 != "*" && $2 != "!") {$2=system("openssl passwd -1 -salt {salt} {password}"); print $2}' PASS/shadow.txt > PASS/test.txt | cat PASS/test.txt 打印命令时,我将收到: “加密密码” 0 它将把2美元改为0美元。但仍然打印出散列。是否仍有方法修复此问
awk -F: 'BEGIN{OFS=":"} ($2 != "*" && $2 != "!") {$2=system("openssl passwd -1 -salt {salt} {password}"); print $2}' PASS/shadow.txt > PASS/test.txt | cat PASS/test.txt
打印命令时,我将收到:
“加密密码”0 它将把2美元改为0美元。但仍然打印出散列。是否仍有方法修复此问题,并将2=命令的输出
我正在尝试将所有$2字段替换为一个新的密码哈希,作为类中的一个示例项目,并将结果存储在一个新文件中。听起来您可能正试图这样做:
awk '
BEGIN { FS=OFS=":" }
$2 !~ /^[*!]$/ {
cmd = "openssl passwd -1 -salt {salt} {password}"
if ( (cmd | getline line) > 0 ) {
$2 = line
}
close(cmd)
}
{ print }
' PASS/shadow.txt > PASS/test.txt
如果没有,请编辑您的问题,以澄清您的需求,并提供更好的示例。听起来您可能正试图这样做:
awk '
BEGIN { FS=OFS=":" }
$2 !~ /^[*!]$/ {
cmd = "openssl passwd -1 -salt {salt} {password}"
if ( (cmd | getline line) > 0 ) {
$2 = line
}
close(cmd)
}
{ print }
' PASS/shadow.txt > PASS/test.txt
如果没有,则编辑您的问题以澄清您的需求并提供更好的示例。您使用的
系统
命令没有达到您的预期效果。它返回您执行的命令的返回码,而不是标准输出
system(expression)
:执行expression
给出的命令,执行方式与POSIX.1-2017
系统接口卷中定义的功能相同,并返回命令的退出状态
您可以通过以下内容轻松看到这一点:
$ awk 'BEGIN{print system("true"), system("false")}'
0 1
在这里,我们执行了命令true
和false
(请参见man-true
和man-false
)
如果要捕获命令的输出,则需要使用
getline
命令。有关getline
的应做和不应做的详细文档,请参见。另请参见此操作的实现。您使用的系统
命令没有达到预期效果。它返回您执行的命令的返回码,而不是标准输出
system(expression)
:执行expression
给出的命令,执行方式与POSIX.1-2017
系统接口卷中定义的功能相同,并返回命令的退出状态
您可以通过以下内容轻松看到这一点:
$ awk 'BEGIN{print system("true"), system("false")}'
0 1
在这里,我们执行了命令true
和false
(请参见man-true
和man-false
)
如果要捕获命令的输出,则需要使用
getline
命令。有关getline
的应做和不应做的详细文档,请参见。有关此操作的实现,请参见。system()
返回命令的退出状态,而不是命令的输出。欢迎使用SO。command$2=system(“opensslpasswd-1-salt{salt}{password}”)
不会像您想的那样工作,system
命令将打开一个子shell,不会将该命令的输出保存到$2
中,而是保存其退出状态(如果我在这里没有错的话),因此,您需要让我们知道您的完整需求,以便我们更好地理解您的问题。system()
返回命令的退出状态,而不是命令的输出。欢迎使用so。command$2=system(“opensslpasswd-1-salt{salt}{password}”)
不会像您想的那样工作,system
命令将打开一个子shell,不会将该命令的输出保存到$2
中,而是保存其退出状态(如果我在这里没有错的话),因此,您需要让我们知道您的完整要求,以便我们更好地理解您的问题。