ash: -c: 未知操作数

ash: -c: unknown operand

我正在尝试 运行 一个 ash 脚本,该脚本会不断检查文件中的字符数,并在文件至少达到 170 个字符或已过 5 秒时执行一些代码。为此,我想调用 wc -c,但它一直告诉我它有一个未知的操作数。

代码:

#!/bin/ash
while true; do
secs=5
endTime=$(( $(date +%s) + secs ))
while [ /usr/bin/wc -c < "/tmp/regfile_2" -gt 170 ] || [ $(date +%s) -lt $endTime ]; do

#more code

它的输出是ash: -c: unknown operand

您想检查 wc 的输出是否满足特定条件。为此,您需要实际执行 wc,就像您已经执行 date 以检查其输出一样。

while [ $(wc -c < "/tmp/regfile_2") -gt 170 ] ||
      [ $(date +%s) -lt $endTime ]; do
    # ...stuff

注意 wc 命令周围的 $(command substitution)

正如您从对建议的重复 的回答中看到的那样,您当前的命令主要检查静态字符串 /usr/bin/wc 是否为非空;此字符串后的 -c 确实是意外的语法无效。

(不清楚为什么要将路径硬编码为 wc;可能只是确保 PATH 在 运行 此脚本之前是正确的。有些情况下您确实想要硬编码路径,但我猜这不是其中之一;如果是,您也应该将路径硬编码到 date。)