AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 21100
Accepted
tucaz
tucaz
Asked: 2011-01-12 10:37:06 +0800 CST2011-01-12 10:37:06 +0800 CST 2011-01-12 10:37:06 +0800 CST

运行脚本时脚本替换问题

  • 772

我是 Linux 的新手,所以这可能应该是一个简单的修复,但我看不到它。

我有一个从官方来源下载的脚本,用于为 fsharp 安装其他工具,但在运行它时它给了我一个语法错误。

我试图用 { 和 } 替换 ( 和 ) 但最终它导致我出现另一个错误,所以我认为这不是问题,因为该脚本适用于所有人。我读过一些文章说我的 bash 版本可能不是正确的。

我正在使用 Ubuntu 10.10,这是错误:

install-bonus.sh:28:语法错误:“(”意外(预期“}”)

这是第 27、28 和 29 行:

{
  声明 -a DIRS=("${!3}")
  文件=$2

和完整的脚本:

#!/bin/sh -e

前缀=/usr
BIN=$PREFIX/bin
MAN=$PREFIX/share/man/man1/

死()
{
    回声“$1”>&2
    echo "安装中止。" >&2
    1号出口
}


echo "此脚本将为 F# 安装其他材料,包括"
echo "手册页、fsharpc 和 fsharpi 脚本以及 Gtk# 对 F# 的支持"
回声“交互式(需要root访问权限)”
回声“”

#------------------------------------------------ -----------------------------------------
# 在指定目录中搜​​索指定文件的实用函数
# 如果找不到文件,它会要求用户提供目录

结果=""

搜索路径()
{
  声明 -a DIRS=("${!3}")
  文件=$2
  目录=${DIRS[0]}
  ${DIRS[@]} 中的 TRYDIR
  做
    如果 [ -f $TRYDIR/$FILE ]
    然后
      目录=$TRYDIR
    菲
  完毕

  尽管 [ !-f $DIR/$文件]
  做
    echo "${DIRS[@]} 中没有找到文件 '$FILE'。请输入 $1 安装目录:"
    读取目录
  完毕
  结果=$目录
}

#------------------------------------------------ -----------------------------------------
# 定位 F# 安装目录 - 这是必需的,因为我们想要
# 添加环境变量,生成 'fsharpc' 和 'fsharpi' 以及
# 将 load-gtk.fsx 复制到该目录
#------------------------------------------------ -----------------------------------------

PATHS=( $1 /usr/lib/fsharp /usr/lib/shared/fsharp )
searchpaths "F# 安装" FSharp.Core.dll PATHS[@]
FSHARPDIR=$结果
echo "成功找到 F# 安装目录。"

#------------------------------------------------ -----------------------------------------
# 检查我们是否拥有所需的一切
#------------------------------------------------ -----------------------------------------

[ $(id -u) -eq 0 ] || die "请以 root 身份运行脚本。"
哪个单声道 > /dev/null || 死“在 PATH 中找不到单声道。”

#------------------------------------------------ -----------------------------------------
# 确保所有其他程序集都在 GAC 中
#------------------------------------------------ -----------------------------------------

echo "向 GAC 安装额外的 F# 程序集"
gacutil -i $FSHARPDIR/FSharp.Build.dll
gacutil -i $FSHARPDIR/FSharp.Compiler.dll
gacutil -i $FSHARPDIR/FSharp.Compiler.Interactive.Settings.dll
gacutil -i $FSHARPDIR/FSharp.Compiler.Server.Shared.dll

#------------------------------------------------ -----------------------------------------
# 安装附加文件
#------------------------------------------------ -----------------------------------------

# 安装手册页

echo "安装附加的 F# 命令、脚本和手册页"
mkdir -p $MAN
cp *.1 $MAN

# 导出 FSHARP_COMPILER_BIN 环境变量

如果 [[ !"$OSTYPE" =~ "darwin" ]]; 然后
  回声“出口 FSHARP_COMPILER_BIN=$FSHARPDIR”> fsharp.sh
  mv fsharp.sh /etc/profile.d/
菲

# 为 F# Interactive 生成​​“load-gtk.fsx”脚本(询问用户是否找不到二进制文件)

PATHS=( /usr/lib/mono/gtk-sharp-2.0 /usr/lib/cli/gtk-sharp-2.0 /Library/Frameworks/Mono.framework/Versions/2.8/lib/mono/gtk-sharp-2.0 )
搜索路径“Gtk#”gtk-sharp.dll PATHS[@]
GTKDIR=$结果
echo "成功找到 Gtk# 根目录。"

PATHS=( /usr/lib/mono/gtk-sharp-2.0 /usr/lib/cli/glib-sharp-2.0 /Library/Frameworks/Mono.framework/Versions/2.8/lib/mono/gtk-sharp-2.0 )
搜索路径“Glib”glib-sharp.dll PATHS[@]
GLIBDIR=$RESULT
echo "成功找到 Glib# 根目录。"

PATHS=( /usr/lib/mono/gtk-sharp-2.0 /usr/lib/cli/atk-sharp-2.0 /Library/Frameworks/Mono.framework/Versions/2.8/lib/mono/gtk-sharp-2.0 )
搜索路径“Atk#”atk-sharp.dll PATHS[@]
ATKDIR=$ 结果
echo "成功找到 Atk# 根目录。"

PATHS=( /usr/lib/mono/gtk-sharp-2.0 /usr/lib/cli/gdk-sharp-2.0 /Library/Frameworks/Mono.framework/Versions/2.8/lib/mono/gtk-sharp-2.0 )
搜索路径“Gdk#”gdk-sharp.dll PATHS[@]
GDKDIR=$结果
echo "成功找到 Gdk# 根目录。"

cp 奖金/加载-gtk.fsx 加载-gtk1.fsx
sed "s,INSERTGTKPATH,$GTKDIR,g" 加载-gtk1.fsx > 加载-gtk2.fsx
sed "s,INSERTGDKPATH,$GDKDIR,g" 加载-gtk2.fsx > 加载-gtk3.fsx
sed "s,INSERTATKPATH,$ATKDIR,g" 加载-gtk3.fsx > 加载-gtk4.fsx
sed "s,INSERTGLIBPATH,$GLIBDIR,g" 加载-gtk4.fsx > 加载-gtk.fsx
rm 加载-gtk1.fsx
rm 加载-gtk2.fsx
rm 加载-gtk3.fsx
rm 加载-gtk4.fsx
mv load-gtk.fsx $FSHARPDIR/load-gtk.fsx

# 生成 'fsharpc' 和 'fsharpi' 脚本(使用 F# 路径)
# 'fsharpi' 自动搜索 F# 根目录(例如 load-gtk)

echo "#!/bin/sh" > fsharpc
echo "exec mono $FSHARPDIR/fsc.exe --驻留\"\$@\"" >> fsharpc
chmod 755 fsharp

回声“#!/bin/sh”> fsharpi
echo "执行单声道 $FSHARPDIR/fsi.exe -I:\"$FSHARPDIR\" \"\$@\"" >> fsharpi
chmod 755 fsharpi

mv fsharpc $BIN/fsharpc
mv fsharpi $BIN/fsharpi

非常感谢!

scripts
  • 1 1 个回答
  • 1061 Views

1 个回答

  • Voted
  1. Best Answer
    user8290
    2011-01-12T10:55:23+08:002011-01-12T10:55:23+08:00

    将第一行从

    #! /bin/sh -e
    

    至

    #!/bin/bash -e
    
    • 2

相关问题

  • 如何在 Nautilus 中管理保存的完整网页及其目录(例如 n.html 和 n_files)

  • 如何每 5 秒运行一次脚本?

  • 如何将必须从其自己的目录中运行的程序添加到面板或主菜单?

  • 如何编写 shell 脚本来安装应用程序列表?

  • Mac OS X Automator 的替代品?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    我需要什么命令来解压缩/提取 .tar.gz 文件?

    • 8 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Marko Smith

    如何使用命令行将用户添加为新的 sudoer?

    • 7 个回答
  • Marko Smith

    更改文件夹权限和所有权

    • 9 个回答
  • Martin Hope
    EmmyS 我需要什么命令来解压缩/提取 .tar.gz 文件? 2011-02-09 14:50:41 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve