我正在尝试运行一个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
发布于 2021-07-15 20:30:59
您需要检查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。)
https://stackoverflow.com/questions/68393622
复制相似问题