我正在使用快速而髒的BASH腳本來自動執行CF分區過程。
這工作得很好,直到我想添加到它。Bash EOF有意外的行爲
基本上,我有一個腳本劃分出小型閃存這樣:
CMD=.fdisk
DEV=/dev/sdc
echo "Calculating partition sizes..."
P1SIZE=+1100M
P2SIZE=+1200M
echo "Creating instruction file..."
PT1="n p 1\n $P1SIZE"
PT2="n p 2\n $P2SIZE"
END="a 1 w EOF\n"
[ -e $CMD ] && rm -rf $CMD
for i in $PT1 $PT2 $END; do echo -e $i >> $CMD; done
echo "Creating partitions..."
fdisk $DEV << EOF < $CMD
[ -e $CMD ] && rm -f $CMD
的想法是,在未來的「$ CMD」表示的文件將自動與外部工具創建適當的開始和結束值。現在我只是接受默認的開始並提供一個大小。
這很有效,直到我想在腳本中加入一些額外的步驟。但是當我注意到奇怪的行爲時,我遇到了問題。
第一個是,如果我添加上面的代碼的函數裏面,我會不斷收到一個腳本錯誤:
line XX: syntax error: unexpected end of file
另外,我意識到,「FDISK」命令後的任何額外的代碼將不會執行腳本似乎只是終止(沒有錯誤,$?= 0)。
有誰知道爲什麼該功能不起作用,腳本終止?
驅動器downvoters是一個討厭的,但他們發生;最好習慣它。如果您認爲自己受到攻擊(大量降價),請與團隊聯繫或諮詢。他們可能是一個失敗者,他們可能會比你想要的更低落,但你最好忽略他們。 (悲傷,但如此) – 2010-11-26 05:31:41