簡體   English   中英

如何在shell腳本中添加縮進

[英]How to add indentation in shell script

我寫了以下腳本:

while read ligne;
do 
    echo ${ligne} >> /tmp/test.conf; 
    other code lines but it's not our probem.
done  < <(cat file.conf | sed -ne '/toto/,$p');

file.conf包含類似的數據:

test1 {
  var2 {}
}
toto {
  var1 {
    next {}
  }
}

該腳本必須寫在文件/tmp/test.conf中

toto {
  var1 {
    next {}
  }
}

與縮進。

今天我到達有這個結果:

toto {
var1 {
next {}
}
}

我嘗試通過添加IFS變量來修改腳本,如下所示:

(IFS='\n';
while read ligne;
do 
    echo ${ligne} >> /tmp/test.conf; 
    other code lines but it's not our probem.
done  < <(cat file.conf | sed -ne '/toto/,$p'));

我有縮進,但結果中的所有n字母都已刪除。

toto {
  var1 {
    ext {}
  }
}

為什么? 我該如何解決?

您可以在read前將這個循環與IFS=一起使用:

while IFS= read -r ligne; do
   echo "$ligne" >> /tmp/test.conf
done < <(sed -ne '/toto/,$p' file.conf)

否則,請確保內部變量REPLY

while read; do
   echo "$REPLY" >> /tmp/test.conf
done < <(sed -ne '/toto/,$p' file.conf)

IFS必須設置為空字符串,而不是換行符:

(IFS='';
while read ligne;
do 
    echo ${ligne} >> /tmp/test.conf; 
    # other code lines but it's not our probem.
done  < <(cat file.conf | sed -ne '/toto/,$p'));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM