【问题标题】:ash: -c: unknown operandash: -c: 未知操作数
【发布时间】:2021-07-15 12:13:59
【问题描述】:

我正在尝试运行一个 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

【问题讨论】:

标签: shell wc ash


【解决方案1】:

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

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

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

从建议重复Checking the success of a command in a bash `if [ .. ]` statement 的答案中可以看出,您当前的命令基本上检查静态字符串/usr/bin/wc 是否为非空;这个字符串后面的-c确实出乎意料,而且语法无效。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 2021-06-03
    • 2019-01-24
    • 1970-01-01
    • 1970-01-01
    • 2020-06-23
    相关资源
    最近更新 更多