Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 我想更换' 与';在狂欢节上_String_Bash_Replace - Fatal编程技术网

String 我想更换' 与';在狂欢节上

String 我想更换' 与';在狂欢节上,string,bash,replace,String,Bash,Replace,我只想替换'与”一起使用,但它不起作用。真正的问题是,谷歌搜索“';”与“bash”的结合并没有真正的帮助 这是我制作的简单脚本 #!/bin/bash STR=$(curl http://www.billboard.com/charts/billboard-200) I=0 while true; do let "I += 1" #Find album STR=${STR#*Song Hover-} SONG=${STR%%div*}

我只想替换
'
一起使用,但它不起作用。真正的问题是,谷歌搜索“';”与“bash”的结合并没有真正的帮助

这是我制作的简单脚本

#!/bin/bash

STR=$(curl http://www.billboard.com/charts/billboard-200)

I=0

while true; do 
    let "I += 1"
    #Find album
    STR=${STR#*Song Hover-}
    SONG=${STR%%div*}
    SONG=${SONG:0:${#SONG}-5}
    STR=${STR#*div}
    SONG = ${SONG/"'"/"'"} #This line does not work
    echo ${SONG}
    SONGS[I]=${SONG}

    #find artist
    STR=${STR#*Artist Name}
    ARTIST=${STR%%a>*}
    ARTIST=${ARTIST:3:${#ARTIST}-6}
    STR=${STR#*a>}
    echo ${ARTIST}
    ARTISTS[I]=${ARTIST}


    TEST=${STR#*Song Hover-}
    if [ ${#TEST} -eq ${#STR} ]; then
        break;
    fi
done

空格把你搞砸了:

SONG = ${SONG/"'"/"'"} 
需要

SONG=${SONG/"'"/"'"}


=
周围有空格使它不是一个赋值,而是一个常规命令,运行一个名为
SONG
的程序,第一个参数
=
,第二个参数取决于实际的歌曲名。

神奇的关键字:
bash
+
html
+
实体
+
+
解码。快乐的谷歌搜索。很好的早期S.O.问题,除了你应该告诉我们你需要什么输出,给你
STR=…
input。祝你好运。尽管如此,我还是强烈建议你使用XMLStarlet这样的工具来进行正确的XML解析,而不是这里的字符串分析方法……使用正确的XML解析器也可以为你进行实体解码,这使得这个问题完全没有意义。顺便说一句,为你自己的变量使用所有大写名称是不好的形式;所有caps名称都保留用于影响系统的变量(
HOME
PATH
LANG
,等等)和shell(
PS1
PWD
,等等),同时保留至少带有一个小写字符的名称供应用程序使用。请参阅IEEE1003.1的第四段,记住shell变量和环境变量共享一个名称空间。天哪,它工作了。事实上,我只是尝试了双引号和许多其他的东西,但是双引号和删除空格是有效的。我想这会很复杂。。。谢谢!