[英]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.