Bash 如何将文件内容发送到函数?

Bash 如何将文件内容发送到函数?,bash,Bash,我想将从文件中获取的XML(HTML)内容发送到替换函数,以便修复错误的HTML实体(并覆盖文件)。但是我做不到 这是基于函数的 函数htmlEscape(){ 本地s=$1 s=${1/&/&;} s=${s//} s=${s/'''/''} echo$s } 我试过了 cat $TEMPFILEPATH | htmlEscape > $TEMPFILEPATH tee $TEMPFILEPATH <<< htmlEscape "$(cat $TEM

我想将从文件中获取的XML(HTML)内容发送到替换函数,以便修复错误的HTML实体(并覆盖文件)。但是我做不到

这是基于函数的

函数htmlEscape(){
本地s=$1
s=${1/&/&;}
s=${s//}
s=${s/'''/''}
echo$s
}
我试过了

cat $TEMPFILEPATH | htmlEscape > $TEMPFILEPATH 
tee $TEMPFILEPATH <<< htmlEscape "$(cat $TEMPFILEPATH)"
cat$TEMPFILEPATH | htmlEscape>$TEMPFILEPATH

tee$TEMPFILEPATH您编写函数是为了接受参数:

htmlEscape "$(cat $TEMPFILEPATH)"
您可以在函数内移动
cat
命令,不过:

htmlEscape () {
    local s=$(cat "$1")
    s=${1//&/&amp;}
    s=${s//</&lt;}
    s=${s//>/&gt;}
    s=${s//'"'/&quot;}
    echo "$s"
}

htmlEscape "$TEMPFILEPATH"
htmlEscape(){
本地s=$(类别“$1”)
s=${1/&/&;}
s=${s//}
s=${s/'''/''}
回显“$s”
}
htmlEscape“$TEMPFILEPATH”

编写函数是为了接受参数:

htmlEscape "$(cat $TEMPFILEPATH)"
您可以在函数内移动
cat
命令,不过:

htmlEscape () {
    local s=$(cat "$1")
    s=${1//&/&amp;}
    s=${s//</&lt;}
    s=${s//>/&gt;}
    s=${s//'"'/&quot;}
    echo "$s"
}

htmlEscape "$TEMPFILEPATH"
htmlEscape(){
本地s=$(类别“$1”)
s=${1/&/&;}
s=${s//}
s=${s/'''/''}
回显“$s”
}
htmlEscape“$TEMPFILEPATH”

我将创建一个
sed
脚本“htmlEscape.sed”

s/&/&amp;/g
s/</&lt;/g
s/>/&gt;/g
s/"/&quot;/g
或使用适当的sed

sed -i -f htmlEscape.sed $TEMPFILEPATH

我将创建一个
sed
脚本“htmlEscape.sed”

s/&/&amp;/g
s/</&lt;/g
s/>/&gt;/g
s/"/&quot;/g
或使用适当的sed

sed -i -f htmlEscape.sed $TEMPFILEPATH

您是否测试过X
html2text
?您在第一行中正确地“发送”了文件内容。但是你没有阅读它。带有
tee
的第二行没有任何意义。请注意,
>$TEMPFILEPATH
可能会在
cat
有机会读取全部内容之前截断文件。您可能应该将函数创建为一组sed命令,并通过管道将其传递到那里。您是否测试过x
html2text
?您正在“发送”文件内容正确地显示在第一行中。但是你没有阅读它。带有
tee
的第二行没有任何意义。请注意,
>$TEMPFILEPATH
可能会在
cat
有机会读取全部内容之前截断文件。您可能应该将函数创建为一组sed命令并通过管道传递。@WalterA我想您的意思是
htmlEscape“$TEMPFILEPATH”>“$TEMPFILEPATH.out”
@WalterA我想你的意思是
htmlEscape“$TEMPFILEPATH”>“$TEMPFILEPATH.out”