没有混乱输出的wget bash函数

没有混乱输出的wget bash函数,bash,awk,sed,wget,Bash,Awk,Sed,Wget,我正在学习在bash函数中自定义wget,但遇到了问题。我想显示下载(文件):%而不是wget的混乱输出。下面的函数似乎很接近,我很难根据自己的具体需要调用它 例如,我的标准是: cd 'C:\Users\cmccabe\Desktop\wget' wget -O getCSV.txt http://xxx.xx.xxx.xxx/data/getCSV.csv 然后将.csv作为.txt文件下载到所有凌乱的wget输出指定的目录中 这个函数似乎或多或少能满足我的需要,但我似乎无法使用我的数据使

我正在学习在
bash
函数中自定义
wget
,但遇到了问题。我想显示
下载(文件):%
而不是
wget
的混乱输出。下面的函数似乎很接近,我很难根据自己的具体需要调用它

例如,我的标准是:

cd 'C:\Users\cmccabe\Desktop\wget'
wget -O getCSV.txt http://xxx.xx.xxx.xxx/data/getCSV.csv
然后将.csv作为.txt文件下载到所有凌乱的
wget
输出指定的目录中

这个函数似乎或多或少能满足我的需要,但我似乎无法使用我的数据使它正常工作。下面是我试过的。谢谢:)

编辑的代码

#!/bin/bash

download () {
url=http://xxx.xx.xxx.xxx/data/getCSV.csv
destin='C:\Users\cmccabe\Desktop\wget'
echo -n "    "
if [ "$destin" ]; then
wget -O getCSV.txt --progress=dot "$url"  -O  "$destin" 2>&1 | grep --line-buffered "%" | \
    sed -u -e "s,\.,,g" | awk '{printf("\b\b\b\b%4s", $2)}'
else 
wget -O getCSV.txt --progress=dot $url 2>&1 | grep --line-buffered "%" | \
sed -u -e "s,\.,,g" | awk '{printf("\b\b\b\b%4s", $2)}'
fi
echo -ne "\b\b\b\b"
echo " DONE"
menu
}

menu() {
while true
do
    printf "\n Welcome to NGS menu (v1), please make a selection from the MENU \n
    ==================================\n\n
    \t 1  Patient QC\n
    ==================================\n\n"

    printf "\t Your choice: "; read menu_choice

    case "$menu_choice" in
    1) patient ;;
    *) printf "\n Invalid choice."; sleep 2 ;;
    esac
done
}

localurl=$1 wget-O getCSV.txthttp://xxx.xx.xxx.xxx/data/getCSV.csv
很混乱。你想在那里做什么?它不会运行
wget
命令。使用变量时引用变量(例如,
“$url”
“$destin”
,等等),这里到底有什么不起作用?发生了什么?这些只是为了向我们显示传递给函数的值吗?它们真的在你的剧本里吗?你怎么打电话给
下载
。因为如前所述,
wget…
位和目标路径是
local
的参数,对您没有任何帮助。如果需要多次调用函数,则可以使用该函数。但是,在调用函数时,需要将参数传递给函数<代码>下载'http://xxx.xx.xxx.xxx/data/getCSV.csv''C:\Users\cmccabe\Desktop\wget\getCSV.txt'
或类似文件。
$1
$2
是函数的第一个和第二个参数。如果您想硬编码它们,那么您需要
本地url=http://xxx.xx.xxx.xxx/data/getCSV.csv
local destin='C:\Users\cmccabe\Desktop\wget\getCSV.txt
。您不会在任何地方调用
菜单
函数,但应该可以从脚本顶部看到回声输出。
#!/bin/bash

download () {
url=http://xxx.xx.xxx.xxx/data/getCSV.csv
destin='C:\Users\cmccabe\Desktop\wget'
echo -n "    "
if [ "$destin" ]; then
wget -O getCSV.txt --progress=dot "$url"  -O  "$destin" 2>&1 | grep --line-buffered "%" | \
    sed -u -e "s,\.,,g" | awk '{printf("\b\b\b\b%4s", $2)}'
else 
wget -O getCSV.txt --progress=dot $url 2>&1 | grep --line-buffered "%" | \
sed -u -e "s,\.,,g" | awk '{printf("\b\b\b\b%4s", $2)}'
fi
echo -ne "\b\b\b\b"
echo " DONE"
menu
}

menu() {
while true
do
    printf "\n Welcome to NGS menu (v1), please make a selection from the MENU \n
    ==================================\n\n
    \t 1  Patient QC\n
    ==================================\n\n"

    printf "\t Your choice: "; read menu_choice

    case "$menu_choice" in
    1) patient ;;
    *) printf "\n Invalid choice."; sleep 2 ;;
    esac
done
}