2011-04-06 4 views
1

に渡す私はいくつかのbashスクリプトを持っている:bashインナースクリプト?インライン?通訳新しい行の問題

#!/bin/bash 
INTERPRETER=/home/user/bin/inter 
TASKSET=/bin/taskset 
BACKUP=/home/user/backup 
SCRIPT='action 1; 
     action 2; 
     if 1; 
      do something; 
      do something else; 
     fi; 
     if 2; do something; do something else; fi; 
     lambda1 { 
      do something; 
      do something; 
      }; 
     lamda2 {do....}; 
     exit 0;' 
echo -e `$TASKSET -c 1,2 $INTERPRETER <<< "$SCRIPT"` 

問題は、フォーマットした場合1とlambda1がエラーをスローしていることです。
フラット化if2とlamda2は正常に動作します。

  1. その新しい ライナーを修正するためのオプションがありますか?
  2. どのようにこの機能 '< < <'と呼ばれています、おじさんgoogleで調べるには?

EDIT

echo -e "$SCRIPT" | $TASKSET..... 

は、これと同じ間違った方法を動作します。

cat <<EOF 
This is some text that I want to pass to cat 
EOF 
ここdoumentのこの形式において

、無膨張や:

+0

あなたの例では、最後の行に不均衡なバッククォートがあります。あなたはそれを修正していただけますか?シンプルで同じ問題を示している実際のスクリプトを作成すると、簡単に手助けすることができます。 – Mikel

+0

'<<<'は、[here string](http://www.gnu.org/software/bash/manual/html_node/Redirections.html#Redirections)と呼ばれます。 – Mikel

+0

'$ SCRIPT'が入力として'/home/user/bin/inter'と入力します。だから、改行があなたが期待することをしていないなら、私は問題が 'inter'によって引き起こされます。 – Mikel

答えて

1

ここで文字列の他の一般的な形式(別名ここでドキュメント)は、このフォームの例

<<word 

あります置換が行われる。

どの言語が/ home/user/bin/inter interpretingですか?その通訳は、改行と改行改行にどのように反応しますか?

+0

それはカスタムインタープリタですが、LF(winの場合はCRLF)は言語構文の一部です。 – bua