我需要使用if函数过滤掉所需的文件,只有当使用SFTP从远程服务器复制文件到我的服务器时。这是我试图获得/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
谁能告诉我怎么做这个?在操作符周围使用空格。这些都是参数对于命令,用空格分隔。
"If"在Bash中拼写为if
(小写)
测试一个条件是用[
…]
在Bash,而不是与(
…)
.
过滤不是比较。这是完全不同的操作。使用grep
:
... | grep -E -v '^USER'
参见:man grep