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