【发布时间】:2018-12-07 13:55:04
【问题描述】:
环境:macOS 10.14
外壳:zsh
《Linux 命令行》一书中有几行代码
#!/bin/bash
while [[ -n $1 ]]; do
if [[ -r $1 ]]; then
max_word=
max_len=0
for i in $(strings $1); do
len=$(echo $i | wc -c)
if (( len > max_len )); then
max_len=$len
max_word=$i
fi
done
echo "$1: '$max_word' ($max_len characters)"
fi
shift
done
我用命令运行代码
hello hello
hello 是包含代码并且可执行的文件。程序很简单。但是,输出是:
hello: 'max_len=$len' ( 13 characters)
您可以在左侧( 之后看到一些额外的空格。我不知道为什么,也没有通过谷歌得到任何解决方案。
【问题讨论】:
-
您的
wc版本在其输出左侧填充,max_len的引用扩展保留。 -
吹毛求疵 - 您可能在命令行上运行
zsh,但 shebang 在脚本中显示 bash。