测试文件中字符串的长度

Avi*_*kar 1 bash shell-script text-processing

我不确定我是否正确使用了我的论点。我想传入一个参数,它是一个包含字符串的文本文件。当我运行这个脚本时,即使字符串的字符数低于 32,它也总是进入 if 语句。

#!/bin/bash
if [ {$1} > 32 ]; then
    echo "Error: Password length invalid"
else
    echo "okay"
fi
Run Code Online (Sandbox Code Playgroud)

yae*_*shi 5

您可以使用${#variable}. 你应该在表达式中使用-gt而不是。>[ ]

#!/bin/bash -

pass=$(cat < "$1") || exit
if [ "${#pass}" -gt 32 ]; then
    echo >&2 "Error: Password length invalid"
    exit 1
else
    echo "okay"
fi
Run Code Online (Sandbox Code Playgroud)

这会计算作为第一个参数传递的文件中的字符数(在当前语言环境的编码中解释),而不是字节数,除了尾随换行符之外,因此对于包含一行文本的文件,它为您提供了那条线。