Bash - 输入到while循环

时间:2011-12-05 09:54:26

标签: bash

#!/bin/bash

kommando="java -jar '/home/git/yuicompressor-2.4.7/build/yuicompressor-2.4.7.jar'"
gitdir='/home/git/repositories/gitosis-admin.git/gitosis-export/dev/www/res/'

echo "Vil Du versionere ? (ja/nej)"
read yesno
    if [yesno="ja"]
then
    echo "Hvad vil du kalde denne version:"
read version 
else
    echo "ok - surethang !"

while
  IFS=$'\n' read linje
do
  case "$linje" in
    *.css )
      $kommando "$gitdir/$linje" --type css >> "$gitdir/`basename \"$linje\" .css`."version".css" ;;
    *.js  ) 
      $kommando "$gitdir/$linje" --type js  >> "$gitdir/`basename \"$linje\" .js`."version".js" ;;
    ?*)
  esac 
done < manifest.conf

当我运行脚本时,它会给我和第36行(结束)的错误(当我将清单提供给while循环时)。

2 个答案:

答案 0 :(得分:3)

我在您的代码中看到以下错误:

  • 您没有附上if
  • fi声明
  • 错过了if标题
  • 中的空格
  • 当您想获得变量值时使用$

所以,而不是

read yesno
if [yesno="ja"]
then
    echo "Hvad vil du kalde denne version:"
    read version 
else
    echo "ok - surethang !"

你应该写

read yesno
if [ $yesno = "ja" ]
then
    echo "Hvad vil du kalde denne version:"
    read version 
else
    echo "ok - surethang !"
fi

答案 1 :(得分:2)

您至少有迷路?*)没有终止;;。此外,[yesno="ja"] comaprison是错误的,你输了一美元,并且由于太空计划的美元短缺减少了。请改为[[ "$yesno" = "ja" ]]

否则对错误的描述可能会有所帮助。