-eq一元运算符预期

时间:2019-09-18 02:27:03

标签: bash shell

我在这里有此代码。 但是我得到了错误:

./concatconvert: line 9: [: -eq: unary operator expected
./concatconvert: line 18: [: -eq: unary operator expected

这是我的代码:

#!/bin/bash

param=$#
if [ $# -le 2 ]
then
 echo "Usage: concatconvert [-u|-1] FILE ...
 Description: concatenates FILE(s) to standard output separating them with divider -----. Optional first argument -u or -l converts contents to uppercase or lowercase,$
fi
if [ $1 -eq "-u" ]
then
 while [ $param -ge 1 ]
 do
  ./concat | awk '{print toupper($0)}'
  param=$(( param-1 ))
  shift
done
fi
if [ $1 -eq "-l" ]
then
 while [ $param -ge 1 ]
 do
 ./concat | awk '{print tolower($0)}'
 param=$(( param-1 ))
 shift
done
fi

为什么会出现此错误?我以为-eq是一元运算符?

1 个答案:

答案 0 :(得分:1)

您错过了一些事情,例如-> "的{​​{1}}命令未关闭。然后在echo条件下,因为您要比较一个字符串,所以将其更改为if,所以下面可能是脚本(由于没有样本,所以我没有对其进行测试)。

if [[ "$1" = "-u" ]]