gpt4 book ai didi

带有额外选项的 Linux select 语句

转载 作者:太空狗 更新时间:2023-10-29 12:36:02 25 4
gpt4 key购买 nike

我正忙于编写一个可以从 FTP 下载一些文件的脚本,我想要一个选择语句来提供 ftp 子目录中的目录。但也给一个选项下载所有这一切都应该发生@ $DNAtype 在底部。有人有什么想法吗?

我的代码是:(抱歉荷兰语评论)

#!/bin/bash/
#16-03-2012
#Sander van der Zeeuw s1040176

#Variabele om de ftp aan te kunnen roepen
var='ftp://ftp.ensembl.org/pub/release-66/fasta/'
#Hier word de lijst met beschikbare organisme binnengehaald via de functie curl.
# curl is te installeren via de terminal met het command sudo apt-get install curl
lijst=`curl $var | awk '{print $NF}'`

echo "de keuze 0 selecteert alles"

#hier wordt een directory aangemaakt om de files in weg te schrijven
mkdir -p dnaenpep
cd dnaenpep



#Hier wordt een keuze menu gecreeerd om het juiste organisme te kiezen.
select specie in $lijst
do
break
done
echo "Uw keuze is:" $specie


#Hier wordt de keuze "0" ingebouwd. Zodat alle genomen gedownload worden.
if [ "$specie" == "" ]
then
for i in $lijst
do
namen=$(curl $var$i/dna/ | awk '{print($NF)}')
for files in $namen; do curl $var$i/dna/$files -o $files
curl $var$i/pep/$files -o $files
done
done
fi

echo "de keuze 0 selecteert alles"

#Wanneer de loop niet uitgevoerd wordt, zal via nog een select statement de gekozen worden #welk DNA je van de ftp wil downloaden.
lijst2=`curl $var$specie/ | awk '{print $9}'`
echo $lijst2

select dnatype in $lijst2
do
break
done
echo "uw keuze is:" $dnatype

if [$dnatype == ""]
then
for i in $dnatype
do
wget -O DNAtype "$var$specie/dna/"
wget -O DNAtype "$var$specie/pep/"
done
fi

#Hier worden de files die in $dnatype gemaakt worden gedownload.
wget -O DNAtype "$var$specie/$dnatype/"

cat DNAtype | egrep "=" | tr '"' '\n' | sort | grep ^"ftp" |grep gz > Downlist.txt
wget -c -i Downlist.txt

exit

最佳答案

您的 select 语句应该使用一个数组,您可以向该数组添加其他项,或者在 select 语句中的数组名称之后添加它们。

lijst2=($(curl "$var$specie/" | awk '{print $9}')
lijst2+=("Another option" "Additional option" "Download all")
echo "${lijst2[@]}"

select dnatype in "${lijst2[@]}"
do
break
done
echo "uw keuze is: $dnatype"

lijst2=($(curl "$var$specie/" | awk '{print $9}')
echo "${lijst2[@]}"

select dnatype in "${lijst2[@]}" "Another option" "Additional option" "Download all"

do
break
done
echo "uw keuze is: $dnatype"

你选择哪个取决于你是否想要数组中添加的选项。

要全部下载,只需遍历数组(因此您可能希望使用第二个版本,这样您就不必跳过“全部下载”,例如,因为它不是文件名。

补充说明:

使用 $() 代替反引号进行命令替换。

此语句 if [$dnatype == ""] 需要空格:if [ $dnatype == ""]

展开时引用所有变量。你在一些地方这样做了,但在其他地方没有这样做。

接近尾声的长流水线几乎肯定可以简化。在没有看到示例数据的情况下,我只能猜测是如何做到的。

关于带有额外选项的 Linux select 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11281022/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com