unn*_*337 4 bash special-characters shell-script base64 wc
我创建了脚本,在那里我用 base64 编码了 28 次字符串。然后我想在输出的字符串中回显字符数。
首先我使用${#var}
它给了我 34070。
然后我尝试了相同的字符串
script.sh | wc -c
Run Code Online (Sandbox Code Playgroud)
这给了我 34071。
#!/bin/bash
var="9M"
for i in {1..28};do
var=$(echo $var | base64)
done
echo ${#var}
Run Code Online (Sandbox Code Playgroud)
究竟是什么使这两个输出不同?
正如您在此示例中使用od
显示字节的命令所看到的,它打印换行符:
$ echo foo | od -c -b 0000000 foo \n 146 157 157 012 0000004
所以在这种情况下,wc -c
以及wc -m
计算换行符。
没有换行符:
$ echo foo | od -c -b 0000000 f o o \n 146 157 157 012 0000004
因此,如果您使用echo
,请添加该-n
选项,使其不打印换行符,或者printf
:
$ echo -n foo | od -c -b
0000000 f o o
146 157 157
0000003
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
223 次 |
最近记录: |