lftpを使ってftpサーバからファイルをダウンロードするためのbashスクリプトを書いています。私は2番目の入力引数に基づいてファイルを削除したかったのです。if文をlftpブロックに入れる方法
#!/bin/bash
cd $1
lftp -u found,e48RgK7s sftp://ftp.xxx.org << EOF
set xfer:clobber on
mget *.xml
if [ $2 = "prod"]; then
echo "Production mode. Deleting files"
mrm *.xml
else
echo "Non-prod mode. Keeping files"
fi
EOF
ただし、EOFの前にlftpブロックで文を使用することはできません。
Unknown command `if'.
Unknown command `then'.
Usage: rm [-r] [-f] files...
Unknown command `else'.
このようなブロックにif文を埋め込むにはどうすればよいですか?
ところで、 '[$ 2 =「PROD」]'正確に間違って引用されます'prod'は引用符でくくる必要はありません(1つの単語として一方向にしか解析できません)が、' $ 2'は任意の数のシェル単語に評価されるので、 '[' 、引用されていない場合。これはhttp://shellcheck.net/が見つけることができる問題のカテゴリです。 –