Linux
如何在 shell 腳本中使用 if 函式?
只有在使用 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 中的函式。