php – 如何在Bash中正确转义和插入变量?
发布时间:2020-12-13 13:47:17 所属栏目:PHP教程 来源:网络整理
导读:我正在尝试编写一个单行代码来转换某些文件中存在的html实体(所有html都使用UTF-8编码) 我试过了 重新编码HTML_4.0 file.htm 但这也转换非ASCII字符(它打破了UTF-8字符) 在StackOverflow中,我找到了适合一个文件的东西: php -r '$f=@fopen("file.htm","r");
我正在尝试编写一个单行代码来转换某些文件中存在的html实体(所有html都使用UTF-8编码)
我试过了 在StackOverflow中,我找到了适合一个文件的东西: php -r '$f=@fopen("file.htm","r");echo html_entity_decode(fread($f,20000));fclose($f);' 但是当我尝试用多个文件制作它时 for fi in *.htm; do php -r '$f=@fopen("$fi",20000));fclose($f);';done 我知道这里的问题是如何“转义”$fi(bash变量),因此PHP不会将其作为PHP变量读取.
你差不多就在那里.
当它发生时,问题不在于如何做到这一点,它实际上是关于如何让bash解释变量并传递它们. 你有: for fi in *.htm; do php -r '$f=@fopen("$fi",20000));fclose($f);';done 其中有单引号,里面有双引号. 单引号不是由bash在内部插入的,但是双引号是..所以如果你把它改为: for fi in *.htm; do php -r "$f=@fopen("$fi",'r');echo html_entity_decode(fread($f,20000));fclose($f);"; done 因为我们现在使用双引号,我们也必须逃避$符号,否则bash认为它们是可插入的变量,并将它们替换掉. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |