BASH补充说明

时间:2009-07-13 11:21:26

标签: linux bash

我希望编写代码为ex open inittab文件添加内容并添加

c2:1235:respawn:/sbin/agetty 38400 tty2 linux
c3:1235:respawn:/sbin/agetty 38400 tty3 linux
c4:1235:respawn:/sbin/agetty 38400 tty4 linux
c5:1235:respawn:/sbin/agetty 38400 tty5 linux
c6:12345:respawn:/sbin/agetty 38400 tty6 linux
<<~~~ i want add code here 

# Local serial lines:
#s1:12345:respawn:/sbin/agetty -L ttyS0 9600 vt100
#s2:12345:respawn:/sbin/agetty -L ttyS1 9600 vt100

有没有办法在bash中这样做?

3 个答案:

答案 0 :(得分:1)

这是使用嵌入式awk片段的wazoox脚本的替代方法(我已经添加了来自wazoox的init -q)

#!/bin/bash

my_file=/etc/inittab
my_pattern="c6:12345:respawn:.* 38400 tty6 linux"

awk -f - ${my_file}<<__END__
{ print }
/${my_pattern}/ { 
    print "any code you want to add" 
}
__END__

init -q

只需检查要检测的图案,然后使用“man awk”进行打印。如果您要添加大代码块,则可以在awk代码段中使用$(cat ${my_code_file})

答案 1 :(得分:0)

修改inittab,然后“init -q”重新加载它。如果您的问题是关于bash中的文件编辑,您可以读取一个文件并在这样的循环中重写它:

for i in `cat thefile`
do
   echo $i >> someOtherFile
   if [ "some condition" == "some condition" ];
       then
       # do something else
   fi
done

这将逐行读取“thefile”并写入“someOtherFile”,同时允许您插入任何测试以在流中添加行。

答案 2 :(得分:0)

单程

# awk '/^# Local serial lines/{ print "I wanna add code here\n"}1' /etc/inittab > temp
# mv temp /etc/inittab
然后按照wazoox的说法做init -q。

另一种方法:如果只有一次手动编辑你的inittab。