bash:bash脚本给出错误的替换错误

时间:2018-12-13 08:11:22

标签: bash

脚本:

#!/bin/bash

url=${cat /var/scripts/test.txt | grep -oP '(?<=display_url":")[^"]+'}

for url in $display_urls; do
    curl $url -O /tmp/$url.html
done

此bash脚本给我在Ubuntu上的错误替换错误。任何帮助将不胜感激。

./script.sh: line 3: ${cat /var/scripts/test.txt | grep -oP '(?<=display_url":")[^"]+'}: bad substitution

2 个答案:

答案 0 :(得分:2)

正确的语法是:

url=$(cat /var/scripts/test.txt | grep -oP '(?<=display_url":")[^"]+')

话虽如此,为避免Useless Use Of Cat,请尝试以下操作:

url=$(grep -oP '(?<=display_url":")[^"]+' /var/scripts/test.txt)

来自 man bash

  

命令替换          通过命令替换,命令的输出可以替换命令名称。          有两种形式:

          $(command)
   or
          `command`

答案 1 :(得分:0)

${VARIABLE}用于变量扩展,$(command)用于命令替换。