Shellscript没有阅读结束花括号

时间:2016-08-26 03:44:20

标签: bash shell

我有两个文件main.css和main_custom.css。我想借助关键字在main.css中找到合适的位置,并在标识的位置插入main_custom.css的内容。我正在尝试使用shell脚本。每个文件的代码如下所示。

  

的main.css

[SOME_STUFF]
/*
==========================================================================
   Author's custom styles
========================================================================== 
*/
[SOME_MORE_STUFF]
  

main_custom.css

body {
    padding-top: 50px;
    padding-bottom: 20px;
}
  

script.sh

# Merge custom CSS into master CSS file
LINE_NO=0
while read LINE
do
    ((LINE_NO++))
    if [[ $LINE == *"Author"* ]]
    then
        read LINE
        ((LINE_NO++))
        if [[ $LINE == *"=="* ]]
        then
            read LINE
            ((LINE_NO++))
            break
        fi
    fi
done <"main.css"

# Merge custom CSS into master CSS file
while IFS= read -r CUSTOM_LINE
do
    sed -i -e "$LINE_NO i $CUSTOM_LINE" "main.css"
    ((LINE_NO++))
done <"main_custom.css"

生成的文件看起来像这样 -

  

的main.css

[SOME_STUFF]
/*
 ==========================================================================
   Author's custom styles
   ========================================================================== 
*/
body {
padding-top: 50px;
padding-bottom: 20px;
[SOME_MORE_STUFF]    

现在,当我执行脚本时,脚本会复制main_custom.css文件的前三行,但不会复制带有右括号的文件。另外,我也在失去格式。我做错了什么?

1 个答案:

答案 0 :(得分:1)

这是你脚本的sed oneliner替代品 - 右括号必须在换行符上

sed '/Author\x27s custom styles/{n; rmain_custom.css
}'

输出样本输入

[SOME_STUFF]
/*
==========================================================================
   Author's custom styles
==========================================================================
body {
    padding-top: 50px;
    padding-bottom: 20px;
}
*/
[SOME_MORE_STUFF]