Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash:代码输出中的换行符_Bash_Hash - Fatal编程技术网

Bash:代码输出中的换行符

Bash:代码输出中的换行符,bash,hash,Bash,Hash,以下是我现在掌握的代码: 它似乎是在散列输出之前插入换行符,原因很奇怪,我不明白 hash=$(printf "$pswdOne\n$pswdTwo"|grub-mkpasswd-pbkdf2 |awk '{print $7}') myname=$(whoami) echo "" > ./testoutput printf "set superusers=\"$myname\"" >> ./testoutput printf "\npassword_pbkdf2 $mynam

以下是我现在掌握的代码: 它似乎是在散列输出之前插入换行符,原因很奇怪,我不明白

hash=$(printf "$pswdOne\n$pswdTwo"|grub-mkpasswd-pbkdf2 |awk '{print $7}')
myname=$(whoami)

echo "" > ./testoutput
printf "set superusers=\"$myname\"" >> ./testoutput
printf "\npassword_pbkdf2 $myname $hash" >> ./testoutput
以下是输出:

set superusers="thornegarvin"
password_pbkdf2 thornegarvin 

grub.pbkdf2.sha512.10000.03266E0763AA0C4E3D97C6DEA85DFBC4D34F97630C9FDE42B53E66D900341FF9F0988A7161C5A8B8EFA88AC33B1A06D459B6DA4D066EAB0EAC6B398DFF5FC3BB.614FE51D9ABB0D81695D080F9DF234FE05AB2955F485EC314917764D7E0DC3F3CC239F8C26DE36A8418E33CB89085312F0A9B6E283C407A4B8B3A2C1BC91C7F6

查看
printf“$pswdOne\n$pswdTwo”| grub-mkpasswd-pbkdf2
的输出,您会发现输出了3行:

$ printf "test\ntest"|grub-mkpasswd-pbkdf2
Enter password:
Reenter password:
PBKDF2 hash of your password is grub.pbkdf2.sha512.10000.A4ED2A115DD054DD002C6C70189AEE5DB2E737D4126BC15BD317EDD3A12FE9A1F1ED30AAEA6B223ABA19D5168867B57455491EB7B8E7B73FC0EAB617EC915B82.3C97F68C849082874FB72AB5DA50C1E33975894E1209D0E0FFAF23B784CC6E63E4D62778BC2917834E689C192DCE29D8E1620DFC4C2E97D447B89E3651AC829E
当您
awk'{print$7}'
时,您将得到两条空记录,它们将只是换行符,然后是散列。相反,你可以这样做:

printf "test\ntest"|grub-mkpasswd-pbkdf2 | tail -1 | awk '{print $7}'


查看
printf“$pswdOne\n$pswdTwo”| grub-mkpasswd-pbkdf2
的输出,您会发现输出了3行:

$ printf "test\ntest"|grub-mkpasswd-pbkdf2
Enter password:
Reenter password:
PBKDF2 hash of your password is grub.pbkdf2.sha512.10000.A4ED2A115DD054DD002C6C70189AEE5DB2E737D4126BC15BD317EDD3A12FE9A1F1ED30AAEA6B223ABA19D5168867B57455491EB7B8E7B73FC0EAB617EC915B82.3C97F68C849082874FB72AB5DA50C1E33975894E1209D0E0FFAF23B784CC6E63E4D62778BC2917834E689C192DCE29D8E1620DFC4C2E97D447B89E3651AC829E
当您
awk'{print$7}'
时,您将得到两条空记录,它们将只是换行符,然后是散列。相反,你可以这样做:

printf "test\ntest"|grub-mkpasswd-pbkdf2 | tail -1 | awk '{print $7}'


printf”==%s==\n“$hash”
的输出是什么?(请注意,最好使用
%s
而不是插值参数值,以防止参数值本身包含
%
序列的可能性。不过,我不认为这是一个问题。)
printf“==%s===\n”“$hash”
的输出是什么?(请注意,最好使用
%s
而不是插值参数值,以防止参数值本身包含
%
序列的可能性。不过,我不认为这是一个问题。)或者
awk'/g/{print$7}'
并且可以使用echo-e而不是printf:
echo-e“hi\nhi\n”| grub-mkpasswd-pbkdf2 | awk'/g/{print$7}'
我从未使用过
/g/
。天哪,那真是太方便了。我有一些代码要更新。我使用printf是为了版本之间的兼容性,也是因为它让我可以更精确地控制输出格式。谢谢你的/g/tip,我不知道。或者
awk'/g/{print$7}
,你可以用echo-e代替printf:
echo-e“hi\nhi\n”| grub-mkpasswd-pbkdf2 | awk'/g/{print$7}
我从来没有用过
/g/
。天哪,那真是太方便了。我有一些代码要更新。我使用printf是为了版本之间的兼容性,也是因为它让我可以更精确地控制输出格式。谢谢你的/g/提示,我不知道。