如何在shell脚本中使用if函数?

如何在shell脚本中使用if函数?

仅当使用 SFTP 将文件从远程服务器复制到我的服务器时,我才需要使用 if 函数来过滤掉所需的文件。这是我尝试获取里面的所有数据/filesnew

#!/bin/bash


files=`sshpass -p 'XXX' sftp -P 2222 [email protected]<<EOF
cd /filesnew
ls
EOF`

files=`echo $files|sed "s/.*sftp> ls//"`



(
  echo cd /filesnew
  for file in $files; do
    echo get $file /data/processedfiles/$file
  done
) |sshpass -p 'XXX' sftp -P 2222 [email protected]

我需要过滤掉以"USER".

ex:
If($files==*USER*) then
echo get $file /data/processedfiles/$file

有人可以告诉我该怎么做吗?

答案1

用于sftp获取与模式匹配的所有文件(以目录中的/filesnew/USER*文字字符串开头的文件名)并将它们本地存储在目录中:USER/filesnew/data/processedfiles

mkdir -p /data/processedfiles || exit

sftp -P 2222 [email protected] <<'END_SFTP'
get /filesnew/USER* /data/processedfiles
END_SFTP

请注意,没有理由列出这些文件。您也不必提及本地主机上的目标文件名,只需提及目标目录,并且仅当它与当前目录不同时才提及。

mkdir如果您确信本地目标目录始终存在,则可以跳过初始命令。

作为补充说明,可能值得一提的是,它if是“保留字”,是“语句if”的一部分,而不是 shell 中的函数。

相关内容