unix shell脚本中需要语法错误操作数(错误标记为“-”)

uqxowvwt  于 2022-12-23  发布在  Unix
关注(0)|答案(2)|浏览(316)

在脚本中,我在第109行得到一个错误syntax error operand expected (error token is "-")

#!/bin/ksh
..............
while read file
do 
    upd_time=$((`date +%s`-`stat -c %Y ${file}`))     #At this line getting error
    file_nm=`basename "${file}"`
..................

在上面的实时获取错误为syntax error operand expected (error token is "-")

wecizke3

wecizke31#

您试图在file没有值时调用stat

$ unset file
$ stat -c %Y $file
stat: missing operand
Try 'stat --help' for more information.

如果正确引用$file,您将得到一个稍微好一点的错误消息:

$ stat -c %Y "$file"
stat: cannot stat '': No such file or directory

如果您对输入文件的内容不确定,请尝试在调用stat之前验证$file是否确实包含一个现有文件:

while IFS= read -r file
do 
    [ -e "$file" ] || continue

    upd_time=$(( $(date +%s) - $(stat -c %Y "$file") ))
    file_nm=$(basename "$file")
    ...
done
ne5o7dgx

ne5o7dgx2#

我重复了你的错误:
tmp.txt:

/bin/sh

/bin/bash

test.sh:

while read file; do
  upd_time=$((`date +%s`-`stat -c %Y ${file}`))
  echo $upd_time
done < tmp.txt

输出:

44421445
stat: missing operand
Try 'stat --help' for more information.
-bash: 1671714632-: syntax error: operand expected (error token is "-")
    • 输入文件中有一个空行。**

相关问题