意外错误'然后'在bash脚本上

时间:2015-05-20 17:25:48

标签: bash shell debian

在Debian上,我正在尝试创建我的第一个名为user.sh的脚本。

要在shell中启动它,请输入:user.sh USER -add username

我使用这种关系:USER($ 1)-add($ 2)用户名($ 3)

你帮我找到我的代码有什么问题吗?

if [ $# !=3] ; then                      // check if there are 3 args passed when launching user.sh arg1 arg2 arg3
echo "usage: $0 -add|del name"

else
if [$1 = "USER" ]; then
      if[$2 ="-add" ] ; then
      do adduser $3

      else
      if [$2 ="-dell"] ; then

      do userdel $3

      else echo" The second argument should be "-add" or "-dell"
      fi
    fi
   fi
  fi

由于

1 个答案:

答案 0 :(得分:2)

了解[] 不是 shell元字符非常重要。除此之外,这意味着他们不会破坏文字。此外,[作为整个单词是一个命令(test命令的替代名称)。它和]本身都不是shell语法的一部分。

只有这些字符会分开单词(不带引号时):| & ; ( ) < >空格标签。如果你需要一个单词分词,你必须使用其中一个(通常是空格或制表符;这些是唯一重要性是打破单词的那些)。

此外,shell注释由#引入,作为单词的第一个(也可能是唯一的)字符,而不是C ++样式//

do是与for构造一起使用的关键字。你抛出了一些无关紧要的东西。

看起来这个脚本会执行原始目标的工作:

#!/bin/bash

# check if there are 3 args passed when launching user.sh arg1 arg2 arg3
if [ $# != 3 ]; then
  echo "usage: $0 -add|del name"
elif [ "$1" = "USER" ]; then
  if [ "$2" = "-add" ]; then
    adduser "$3"
  elif [ "$2" = "-dell" ]; then
    userdel "$3"
  else
    echo The second argument should be \"-add\" or \"-dell\"
  fi
fi