2011-04-06 19 views
1

我有一些bash腳本:bash內部腳本?inline?通過口譯新線問題

#!/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. 如何調用這個函數'< < <',在谷歌叔叔看什麼?

編輯

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

行爲此相同的錯誤的方式。

+0

您的示例在最後一行中具有不平衡的反引號。你能糾正它嗎?如果你製作一個簡單的真實腳本並且顯示相同的問題,那麼幫助你將會更容易。 – Mikel 2011-04-06 08:55:55

+0

'<<<'被稱爲[here string](http://www.gnu.org/software/bash/manual/html_node/Redirections.html#Redirections) – Mikel 2011-04-06 08:57:47

+0

'$ SCRIPT'被作爲輸入傳遞給'/home/user中/斌/ inter'。所以如果換行符不符合你的期望,我的問題是由'inter'造成的。 – Mikel 2011-04-06 09:01:02

回答

1

一個這裏字符串的其他一般形式(又名這裏文件)是

<<word 

這種形式的一個例子是:

cat <<EOF 
This is some text that I want to pass to cat 
EOF 

在這裏doument的這種格式,沒有膨脹或替代被執行。

什麼語言是/ home/user/bin/inter interpreting?譯員如何對換行和逃脫換行做出反應?

+0

這是自定義解釋器,但LF(win上的CRLF)是語言語法的一部分。 – bua 2011-05-19 15:07:46