理解语法

时间:2014-11-14 20:32:36

标签: bash shell unix

您好我尝试编写一个带有两个输入参数的脚本,步骤数为第一个,目录为第二个。脚本应该进入所选目录并随机执行以下步骤之一:

1)创建一个随机名称为5个字符的新目录 2)进入主页或第一个现有的子目录

#!/bin/bash

cd $2

for ((c=1; c<=$1; c++))
do
n2=`expr $RANDOM % 2`
n3=`expr $RANDOM % 2`

if [ $n2 -eq 0 ];then
     name=$(tr -dc "[:alpha:]" < /dev/urandom | head -c 5)
     mkdir $name
else
   if[ $n3 -eq 0 ];then
     cd $1
   else
     first=$(ls -d */)
     cd $first
   fi
fi
done

当我执行脚本时,我收到一个错误:&#34;第13行:意外令牌附近的语法错误&#39;然后&#39;&#34;&#39; 感谢您的任何建议

1 个答案:

答案 0 :(得分:0)

你在第二次开场[之前忘记了空格。

if [ $n3 -eq 0 ];then

应该工作。

[必须用括号括起来的原因是[是一个命令,而不是一些bash内置的特殊语法。它恰好是一个内置命令,但它仍然遵循与任何其他命令相同的语法规则。