**

注释

**

单行

#为注释

多行

: '       &nbsp                                  !!!冒号和'必须有空格
被注释的多行内容
'


echo 多行直接写

echo "this line 1       &nbsp                        !!!echo和"必须有空格
这是一个由shell创建的文件
this is a file created by shell.
we want to make a good world."


写文本

单行文本

//echo后边用单引号包围要添加的内容
echo 'add content'>>/home/data/test.sh1
注意:>> 是追加
echo 'add content'>/home/data/test.sh

多行文本

echo "测试写文件"
cat>test1<<EOF
这是一个由shell创建的文件
this is a file created by shell.
we want to make a good world.
EOF

其中,<<EOF 表示当遇到EOF时结束输入。
cat>test1<<EOF 这间没有空格


linux命令怎么让su后的命令执行

多行

可以使用 <<EOF 参数实现。
su - test <<EOF
pwd;
exit;
EOF

单行

代码如下:
su - test -c "pwd"

                                                                                                                                                                                      ————还是用单行保险点

ps:
切换用户只执行一条命令的可以用: su - oracle -c command
切换用户执行一个shell文件可以用:su - oracle -s /bin/bash shell.sh

————————————————————————————————
原文:https://blog.csdn.net/lufubo/...

shell中交互输入自动化

shell中有时我们需要交互,但是呢我们又不想每次从stdin输入,想让其自动化,这时我们就要使shell交互输入自动化了。这个功能很有用的哟。好好学习。

1 利用重定向

重定向的方法应该是最简单的

例:

以下的test.sh是要求我们从stdin中分别输入no,name然后将输入的no,name打印出来

[root@localhost test]# cat test.sh

! /bin/bash

read -p "enter number:" no

read -p "enter name:" name

echo you have entered $no, $name

以下是作为输入的文件内容:

[root@localhost test]# cat input.data

1

lufubo

然后我们利用重定向来完成交互的自动化:

[root@localhost test]# ./test.sh < input.data

you have entered 1, lufubo

看吧!效果不错吧!哈哈

2 利用管道完成交互的自动化

这个就是利用管道特点,让前个命令的输出作为后个命令的输入完成的

也用上面例子举例:

[root@localhost test]# echo -e "1nlufbon" | ./test.sh

you have entered 1, lufbo

上面中的 "1nlufbon" 中的“n”是换行符的意思,这个比较简单的。

3 利用expect

expect是专门用来交互自动化的工具,但它有可能不是随系统就安装好的,有时需要自己手工安装该命令

查看是否已经安装:rpm -qa | grep expect

以下脚本完成跟上述相同的功能

[root@localhost test]# cat expect_test.sh

! /usr/bin/expect

spawn ./test.sh

expect "enter number:"

send "1n"

expect "enter name:"

send "lufubon"

expect off

注意:第一行是/usr/bin/expect,这个是选用解释器的意思,我们shell一般选的是 /bin/bash,这里不是

spawn: 指定需要将哪个命令自动化

expect:需要等待的消息

send:是要发送的命令

expect off:指明命令交互结束

Logo

更多推荐