bash if-else语句

bash if-else语句,bash,if-statement,Bash,If Statement,这是如此简单,但我无法让它工作。我想在ssh-bash脚本中执行一个简单的if-else语句。下面是我的代码: #!/bin/sh echo -n "enter what type of logs. (ie. cpanel, apache) " read type if [$type == cpanel] then LOGTYPES ="error, access" else LOGTYPES ="error, access, suphp, suexec" fi echo -n "enter

这是如此简单,但我无法让它工作。我想在ssh-bash脚本中执行一个简单的if-else语句。下面是我的代码:

#!/bin/sh

echo -n "enter what type of logs. (ie. cpanel, apache) "
read type
if [$type == cpanel]
then
LOGTYPES ="error, access"
else
LOGTYPES ="error, access, suphp, suexec"
fi

echo -n "enter which log to tail (ie. $LOGTYPES) "
read logs
echo -n "enter last number of lines to view. (ie. 10, 5000 etc) "
read lines

tail -$lines /usr/local/$type\/logs/$logs\_log
我已经尝试了所有的方法,但一直都会出现以下错误:

[~]# /apachetail
enter what type of logs. (ie. cpanel, apache) cpanel
/apachetail: line 5: [cpanel: command not found
/apachetail: line 9: LOGTYPES: command not found
enter which log to tail (ie. )
我尝试过以下方法,但均无效:

    if [$type -eq cpanel]
    if [$type -eq cpanel];
    if [$type == cpanel];
    if [$type = cpanel]
    if [$type = cpanel];
    if ["$type" = cpanel]
    if ["$type" = cpanel];
    if ["$type" == cpanel]
    if ["$type" == cpanel];
    if ["$type" -eq cpanel];
    if ["$type" -eq cpanel]

LOGTYPES=
应该是
LOGTYPES=
——注意缺少的空格。
[$type==cpanel]
应该是
[$type==cpanel]
-注意添加的空格。

日志类型=应该是
日志类型=
-注意缺少的空格。 而
[$type==cpanel]
应该是
[$type==cpanel]
-注意添加的空格。

更改

if [$type == cpanel]

任何赋值都必须在=(赋值运算符)周围没有空格。

更改

if [$type == cpanel]


任何赋值都必须在=(赋值运算符)周围没有空格。

您可能还希望引用条件,以便在[[“$type”==“cpanel”]]中使用它
[[
[
的更高级版本。在条件中插入空格总是一个好主意,这样在括号和条件的每一边之间都有一个空格。不需要在
[[
中引用完整的引号。您可能还希望引用条件,以便在[[“$type”=“cpanel”时它是
]]
[[
[
的更高级版本。在条件中插入空格也是一个好主意,这样在括号和条件的每一侧之间都有一个空格。在
中有完整的引号[[
是不必要的。啊,所以主要是关于间距。谢谢你的工作!另外,“[a==b]”中的双“=”是一个bash扩展,可以在第一行使用#!/bin/bash或“[a=b]”@sven30:在shell命令语言中记住这一点很重要
[
是一个命令,而不是语法。它是一个你执行的程序,它接受参数;它也被称为
test
(mantest)。因为它不是语法,所以bash无法分辨它是什么,除非它是由空格或其他语法分隔的自己的标记。@Sorpigal很有趣,但这是否意味着“]”仅仅是糖让它看起来漂亮吗?啊,所以主要是关于间距。谢谢你的工作!另外,“[a==b]”中的双“=”是一个bash扩展,在第一行使用#!/bin/bash或“[a=b]”@sven30:在shell命令语言
[
是一个命令,而不是语法。它是一个你执行的程序,它需要参数;它也被称为
test
(mantest)。因为它不是语法,所以bash无法分辨它是什么,除非它是由空格或其他语法分隔的自己的标记。@Sorpigal很有趣,但这是否意味着“]”只是为了让它看起来好看而添加的糖?
   LOGTYPES ="error, access"
   LOGTYPES="error, access"