微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ash: -c: 未知操作数

如何解决ash: -c: 未知操作数

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

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。