在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
由于
答案 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