0

我正在尝试创建一个 bash 脚本来构建要执行的命令(包括参数)。命令可执行文件的名称是 ms (位于 ms 目录中),它需要我计算并存储在字符串中的一堆参数。当需要执行命令时,我尝试:

GENETREES=$(../ms/${x:1})

但我收到错误消息:

./simulate.sh: line 21: ../ms/ms 6 1 -T -I 6 1 1 1 1 1 1 -ej 0.059851352500000010170566611122922040522098541259765625 1 4 -es 0.059851352500000010170566611122922040522098541259765625 4 0.3457841801761454281205487859551794826984405517578125 -ej 0.059851352500000010170566611122922040522098541259765625 2 3 -es 0.059851352500000010170566611122922040522098541259765625 3 0.54870128110803395582451003065216355025768280029296875 -ej 0.0897770262499999471828004971030168235301971435546875 7 9 -es 0.089777026250000002693951728360843844711780548095703125 3 0.8097582153199012200417428175569511950016021728515625 -ej 0.119702699999999995217336845598765648901462554931640625 3 4 -ej 0.125827642499999947656164067666395567357540130615234375 9 10 -es 0.1258276425000000031673152989242225885391235351562500 4 0.28069295861466903030390085405088029801845550537109375 -ej 0.13195258499999995560614252099185250699520111083984375 8 10 -ej 0.1817980399999999663318561715641408227384090423583984375 6 5 -ej 0.2525933399999999717788767839010688476264476776123046875 10 4 -ej 0.41145434999999996872332985731191001832485198974609375 4 5 : File name too long

我认为 bash 认为我打算将所有这些命令参数作为可执行文件名称的一部分。但这不是我的意图。

我究竟做错了什么?

谢谢。

更新 - 要求提供有关如何构建 x 的更多信息

MSOUT=$(java -jar ./NetworkSearchGen.jar ms $3 $TRUENETWORK $4)
OIFS=$IFS
IFS='}'
first="true"
for x in $MSOUT 
do
    if [ $first = "true" ]; then
          echo "$x"
    else
        GENETREES=$(../ms/${x:1})
    fi
    first="false"
done
4

1 回答 1

1

设置 IFS 把事情搞砸了。在执行之前使 IFS=" " 使脚本再次工作。

于 2012-09-10T23:05:24.963 回答