【问题标题】:Replacing commands with a variable?用变量替换命令?
【发布时间】:2019-05-14 12:25:04
【问题描述】:
#!/bin/bash
```
download()
{
    local url=$1
    echo -n "    "
    wget -nc --progress=dot $url 2>&1 | grep --line-buffered "%" | \
    sed -u -e "s,\.,,g" | awk '{printf("\b\b\b\b%4s", $2)}'
    echo -ne "\b\b\b\b"
    echo " DONE"
}
```
file="adaway.org.txt"
echo -n "Downloading $file:"
download "https://raw.githubusercontent.com/EnergizedProtection/block/master/assets/active/filter/$file"

这仍然很粗糙,但工作正常。我只是想制作一些变量来缩短底部,然后让我的 bash 从 cat 文件中读取。

【问题讨论】:

  • 使用 awk 时不需要 grep 和/或 sed。 grep --line-buffered "%" | \ sed -u -e "s,\.,,g" | awk '{printf("\b\b\b\b%4s", $2)}' echo -ne "\b\b\b\b" 可以只是 awk -v b='\b\b\b\b' '/%/{gsub(/./,""); printf "%s%4s",b,$2} END{print b}'

标签: bash variables command debian


【解决方案1】:

您的问题不清楚,但听起来这可能是您想要做的:

$ cat a.txt
http://google.com/foo
http://yahoo.com/stuff/bar

$ cat tst.sh
#!/bin/env bash

input="$1"
while IFS= read -r line; do
    path="${line%/*}"
    file="${line##*/}"
    printf '\nline="%s"\n' "$line"
    printf 'path="%s"\n' "$path"
    printf 'file="%s"\n' "$file"
    echo download "${path}/${file}"
done < "$input"

$ ./tst.sh a.txt

line="http://google.com/foo"
path="http://google.com"
file="foo"
download http://google.com/foo

line="http://yahoo.com/stuff/bar"
path="http://yahoo.com/stuff"
file="bar"
download http://yahoo.com/stuff/bar

如果不是,请编辑您的问题以澄清。

【讨论】:

  • download() { 本地 url=$1 echo -n " " wget -nc --progress=dot $url 2>&1 | grep --line-buffered "%" | \sed -u -e "s,\.,,g" | awk '{printf("\b\b\b\b%4s", $2)}' echo -ne "\b\b\b\b" echo " DONE" } 这是我添加的第一部分。我一直在手动添加最后三个手动行,但试图找到一种方法在另一个文件中创建一个变量,而不是每次添加一个时都必须添加。对不起,如果我没有澄清足够。我对此完全陌生,所以我有点搞砸了。对不起
  • #!/bin/bash #download() #{ # 本地 url=$1 # echo -n " " # wget -nc --progress=dot $url 2>&1 | grep --line-buffered "%" | \ # sed -u -e "s,\.,,g" | awk '{printf("\b\b\b\b%4s", $2)}' # echo -ne "\b\b\b\b" # echo " DONE" #} #file="adaway.org .txt" #echo -n "Downloading $file:" #download "raw.githubusercontent.com/EnergizedProtection/block/master/…" 减去 # 试图将其转换为格式。
  • 无论你想在那些 cmets 中说什么,我很抱歉,但我不明白。您对我的回答有任何反馈或疑问吗?如果您想澄清您的问题然后编辑您的问题,请勿尝试在 cmets 中放置格式化文本(例如代码)或任何解释 - 我们需要知道的所有内容都应在您的问题中明确列出。
猜你喜欢
  • 1970-01-01
  • 2015-01-25
  • 2016-03-19
  • 1970-01-01
  • 2023-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多