导语:希望实现脚本交互安装。但是又不喜欢用expcect。以下脚本适用于固定交互方式,切交互简单的。
我的脚本执行顺序是bash main.sh -a ,交互依次输入1 ; /var/lib/deepwise_mysql;/data1 ;2 ;yes
# 将交互的输入通过sleep 隔开,并通过echo传入给 main.sh,
echo 'echo 1 ' >> install.sh && \
echo 'sleep 5 ' >> install.sh && \
echo 'echo /var/lib/deepwise_mysql' >> install.sh && \
echo 'sleep 5 ' >> install.sh && \
echo 'echo /data1' >> install.sh && \
echo 'sleep 5 ' >> install.sh && \
echo 'echo 2' >> install.sh && \
echo 'sleep 15 ' >> install.sh && \
echo 'echo yes' >> install.sh && \
chmod +x install.sh && \
./install.sh | bash main.sh -a
以下是GPT给出的建议
#!/bin/bash
# 定义会话名称和时间
Tmux_Name="MySession"
Date_Time=$(date +"%Y%m%d%H%M%S")
# 创建新的 tmux 会话并在其中运行命令
tmux new-session -d -s "${Tmux_Name}_${Date_Time}"
tmux send-keys -t "${Tmux_Name}_${Date_Time}:0" "tar zxvf test.tgz" Enter
tmux send-keys -t "${Tmux_Name}_${Date_Time}:0" "cd test" Enter
# 将交互式输入命令写入临时文件
cat <<EOT > input_commands.sh
#!/bin/bash
./01.sh
sleep 1
echo "1"
sleep 1
echo "2"
sleep 1
echo "3"
sleep 1
echo "yes"
sleep 1
echo "done"
EOT
# 确保脚本可执行
chmod +x input_commands.sh
# 在 tmux 会话中运行交互式输入命令
tmux send-keys -t "${Tmux_Name}_${Date_Time}:0" "./input_commands.sh | ./01.sh" Enter
# 清理临时文件
rm input_commands.sh
# 打印完成消息
echo "Commands sent to tmux session ${Tmux_Name}_${Date_Time}."
# 定义 Tmux 会话名称和日期时间
Tmux_Name="my_tmux"
Date_Time=$(date +%Y%m%d%H%M%S)
# 创建一个新的 tmux 会话
tmux new-session -d -s "${Tmux_Name}_${Date_Time}"
# 发送命令解压文件并进入目录
tmux send-keys -t "${Tmux_Name}_${Date_Time}:0" "tar zxvf test.tgz" Enter
tmux send-keys -t "${Tmux_Name}_${Date_Time}:0" "cd test" Enter
# 发送开始执行脚本的命令
tmux send-keys -t "${Tmux_Name}_${Date_Time}:0" "./01.sh" Enter
# 假设这里需要等待一段时间以确保脚本运行到需要交互的部分
# 可以使用 sleep 命令来插入延时,但这只是一个简单的方式,实际情况中可能需要更精确的等待
sleep 2
# 依次发送交互输入,例如:1, 2, 3, yes 或者 enter, enter, enter, yes
tmux send-keys -t "${Tmux_Name}_${Date_Time}:0" "1" Enter
tmux send-keys -t "${Tmux_Name}_${Date_Time}:0" "2" Enter
tmux send-keys -t "${Tmux_Name}_${Date_Time}:0" "3" Enter
tmux send-keys -t "${Tmux_Name}_${Date_Time}:0" "yes" Enter
# 如果还有更多的输入,就继续添加类似的 send-keys 命令
# ...
# 发送完成后的命令
tmux send-keys -t "${Tmux_Name}_${Date_Time}:0" "echo done" Enter

被折叠的 条评论
为什么被折叠?



