Linux

如何在 shell 腳本中使用 if 函式?

  • April 17, 2022

只有在使用 SFTP 將文件從遠端伺服器複製到我的伺服器時,我才需要使用 if 函式過濾掉所需的文件。這是我嘗試獲取裡面的所有數據/filesnew

#!/bin/bash


files=`sshpass -p 'XXX' sftp -P 2222 User1@10.18.90.12<<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 User1@10.18.90.12

我需要過濾掉以"USER".

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

有人可以告訴我如何做到這一點嗎?

sftp用於獲取與模式匹配的所有文件(以目錄中/filesnew/USER*的文字字元串開頭的文件名)並將它們本地儲存在目錄中:USER``/filesnew``/data/processedfiles

mkdir -p /data/processedfiles || exit

sftp -P 2222 User1@10.18.90.12 <<'END_SFTP'
get /filesnew/USER* /data/processedfiles
END_SFTP

請注意,沒有理由列出文件。您也不必提及本地主機上的目標文件名,只需提及目標目錄,並且僅當它與目前目錄不同時。

mkdir如果您確信本地目標目錄始終存在,則可以跳過初始命令。

作為附加說明,可能值得一提的if是,它是“保留字”,是“if語句”的一部分,而不是 shell 中的函式。

引用自:https://unix.stackexchange.com/questions/699341