【问题标题】:getting an error message on line 7 that an unary operator expected [duplicate]在第 7 行收到一元运算符预期的错误消息 [重复]
【发布时间】:2014-09-14 03:26:16
【问题描述】:

我正在 UNIX 中编写一个将数字翻倍的程序

if [ $# == l ]; then
  let "twice=$l*2

if [ $? == 0 ]; then
   clear
   echo "twice Program"
   echo "-------------"
   echo "l * 2 = $twice"
   exit 0
 else
   clear
   echo "The argument must be an integer."
   exit 1
 fi

 exit 0
else
 clear
 echo "Only one argument is acceptable with twice."
 echo :Usage: twice argument"
 exit 1
fi

【问题讨论】:

  • } 在第二个 if 语句中应该是 ]
  • 向stackoverflow输入问题时打错字

标签: shell unix


【解决方案1】:

您使用的是 l(小 L)而不是 1

if [ $# ==  1 ]
then
  let "twice=$1*2"
  if [ $? == 0 ]; then
     echo "twice Program"
     clear
     echo "-------------"
     echo "$1 * 2 = $twice"
     exit 0
 else
     clear
     echo "The argument must be an integer."
     exit 1
 fi

 exit 0
 else
   clear
   echo "Only one argument is acceptable with twice."
   echo ":Usage: twice argument"
   exit 1
fi

【讨论】:

  • 除了我的答案,你能不能。
【解决方案2】:

您在第二行打开了一个双引号,该双引号没有正确关闭。

  let "twice=$l*2

应该是

  let "twice=$1*2"

shell 解释器稍后在处理不相关的双引号时会阻塞。

请注意,您还在几个地方将字母 l (ell) 与数字 1 (one) 混淆了,这不会让 shell 理解您的脚本。

【讨论】:

  • 向stackoverflow输入问题时打错字
  • 那么请更正所有仍然存在的剩余部分。
  • 如果 [ $# == l ];然后让 "twice=$l*2" fi if [ $? == 0];然后 clear echo "twice Program" echo "-------------" echo "l * 2 = $twice" exit 0 else clear echo "参数必须是整数。" exit 1 fi exit 0 else clear echo "只有一个参数可以接受两次。" echo :Usage: two argument" exit 1 fi
  • 现在只显示了两次.sh 程序-------------------------------- *2 =
猜你喜欢
  • 2016-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多