使用shell添加多行到某个文件的几个办法, 启动EC2设置User Data时可能会用到。

方法一: 逐行echo添加

1
2
echo '#!/bin/bash' > way1.sh
echo 'export PATH=$PATH:~/bin/' >> way1.sh

查看文件内容为:

1
2
3
4
$ cat way1.sh
#!/bin/bash
export PATH=$PATH:~/bin/
$

方法二: echo 换行添加

1
2
echo '#!/bin/bash
export PATH=$PATH:~/bin/' > way2.sh

查看文件内容为:

1
2
3
4
$ cat way2.sh
#!/bin/bash
export PATH=$PATH:~/bin/
$

方法三: echo转义添加

1
2
# 使用-e参数转义\n
echo -e '#!/bin/bash\nexport PATH=$PATH:~/bin/' >> way3.sh

查看文件内容为:

1
2
3
4
$ cat way3.sh
#!/bin/bash
export PATH=$PATH:~/bin/
$

方法四: 使用cat

1
2
3
4
5
# 注意,$PATH前面需要加\进行转义,否则会将$PATH展开
cat > way4.sh <<EOF
#!/bin/bash
export PATH=\$PATH:~/bin/
EOF

查看文件内容为:

1
2
3
4
$ cat way4.sh
#!/bin/bash
export PATH=$PATH:~/bin/
$

如果$PATH前不加转移符,会将$PATH展开

1
2
3
4
cat > way4_expand.sh <<EOF
#!/bin/bash
export PATH=$PATH:~/bin/
EOF

查看文件内容为:

1
2
3
4
5
6
7
8
9
10
# 先查看PATH
$ echo $PATH
/home/ec2-user/.nvm/versions/node/v6.11.5/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt/aws/bin:/home/ec2-user/.local/bin:/home/ec2-user/bin:/home/ec2-user/bin/
$
# 可以看到命令将PATH展开后再写入文件way4_expand.sh中
$ cat way4_expand.sh
#!/bin/bash
export PATH=/home/ec2-user/.nvm/versions/node/v6.11.5/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt/aws/bin:/home/ec2-user/.local/bin:/home/ec2-user/bin:/home/ec2-user/bin/:~/bin/
$

留言