我正在自動執行一個ftp會話,但我想要把stdout和管道文件。我想出了3個選項:使用內聯<< EOF ... EOF時,我在哪裏進行管道歸檔?
選項1
ftp -i ftpServer >stdoutFile <<EOF
cd somewhere
get something
EOF
選項2
ftp -i ftpServer <<EOF >stdoutFile
cd somewhere
get something
EOF
選項3
ftp -i ftpServer <<EOF
cd somewhere
get something
EOF > stdoutFile
我似乎正在接受所有這些語法錯誤,而且他們似乎都沒有工作。
我覺得我以前有過這樣的工作,但我不記得如何。
編輯
的語法錯誤仍然存在。看起來好像是我用這個文件標題爲EOF的方法來使用這個方法,我不能在腳本的其他地方使用這個分隔符 - 很奇怪。
產生的確切錯誤實際上是下一個if語句終止時的失敗。例如:
if [ condition ]
then
ftp -i ftpServer >stdoutFile <<EOF
cd somewhere
get something
EOF
fi
if [ something else ]
then
somethingWithaHereDoc <<EOF
foo
bar
EOF
fi
我得到Syntax error near unexpected token 'fi'
指向最後fi的行。
FTP連接現在掛起。我正在使用〜/ .bashrc文件,它在另一個控制檯中工作,但不在腳本中。我不小心在目錄中有一個命名管道,導致ftp會話掛起。現在全部解決。謝謝!
我這樣做的原因是因爲我想從ftp服務器上下載特定的文件。我列出目錄內容,退出ftp會話並以bash處理它,然後啓動另一個ftp會話來獲取我選擇的文件。
選項1和2都應該工作。 –
請顯示您正在獲取的語法錯誤和上下文。選項3肯定會失敗,但前兩項應該沒問題。 – cdarke
你上面的第一個和第二個選項是正確的,但是你的'EOF'必須是唯一的一行:沒有前導標籤或空格,也沒有尾隨垃圾。你看到的問題是bash不認識終結者。 – gilez