shell脚本等待a出现就输入b怎么写
时间: 2023-04-01 12:03:08 浏览: 51
可以使用while循环和read命令来实现。具体代码如下:
```
while true
do
read line
if [ "$line" = "a" ]; then
echo "b"
break
fi
done
```
这段代码会不断读取用户输入的内容,如果输入的内容是"a",则输出"b"并结束循环。
相关问题
写2个shell 脚本,脚本A可以运行脚本B。脚本B先创建为B.txt,然后每隔1s输出hello shell B+循环次数到B.txt,如果脚本B的循环次数大于10次,则新建B1.txt,并将输入结果输出到B1.txt,再次循环10次后,将新建B2.txt,后面以此类推。脚本A在运行脚本B之后,不断检测脚本B创建新文件前的旧文件中是否含有‘100’,如果没有则删除旧文件。如果有则停止运行脚本B,并向当前含有100的文件中输入ok
脚本A:
```shell
#!/bin/bash
# 运行脚本B
./B.sh &
# 设置标志变量
flag=0
while true; do
# 检查是否有旧文件
if [ -f "B.txt" ]; then
# 检查当前文件是否含有 100
if grep -q "100" "B.txt"; then
# 向当前文件中输入 ok
echo "ok" >> "B.txt"
# 停止脚本B
kill $(pgrep B.sh)
# 设置标志变量为 1
flag=1
else
# 删除旧文件
rm "B.txt"
fi
fi
# 如果标志变量为 1,退出循环
if [ $flag -eq 1 ]; then
break
fi
# 等待 1s
sleep 1
done
```
脚本B:
```shell
#!/bin/bash
# 初始化循环计数器
count=0
# 初始化文件计数器
file_count=0
while true; do
# 创建文件
if [ $count -eq 0 ]; then
touch "B.txt"
fi
# 输出信息到文件
echo "hello shell B$count" >> "B$file_count.txt"
# 增加循环计数器
count=$((count+1))
# 判断是否需要新建文件
if [ $count -eq 10 ]; then
# 新建文件
file_count=$((file_count+1))
touch "B$file_count.txt"
# 重置循环计数器
count=0
fi
# 等待 1s
sleep 1
done
```
说明:
脚本A中,先运行脚本B,并设置标志变量为 0。然后开始一个无限循环,在循环中检查是否有旧文件,如果
请使用shell实现以下功能 0.给出选项序号1深圳 2成都 3北京,等待输出得序号,并将对应序号得值,复制给CI_Site 1.检测出当前系统版本并输出,输出后将版本赋值给变量UI_system 2.新建~/bin 3.cd 到~/bin 执行git clone git://192.168.9.142/tools/repo -b stable
以下是使用Shell脚本实现您所需功能的示例代码:
```shell
#!/bin/bash
# 给出选项序号
echo "选项序号: 1深圳 2成都 3北京"
# 等待用户输入选项序号,并将对应的值赋给变量CI_Site
read -r option
case $option in
1) CI_Site="深圳";;
2) CI_Site="成都";;
3) CI_Site="北京";;
*) echo "无效的选项"; exit 1;;
esac
# 检测系统版本并输出
UI_system=$(lsb_release -ds)
echo "当前系统版本: $UI_system"
# 新建~/bin目录
mkdir -p ~/bin
# 切换到~/bin目录并执行git clone命令
cd ~/bin || exit
git clone git://192.168.9.142/tools/repo -b stable
```
在上面的示例中,首先使用`echo`命令输出选项序号:1深圳、2成都和3北京。然后使用`read`命令等待用户输入选项序号,并根据用户输入的序号使用`case`语句将对应的值赋给变量`CI_Site`。
接下来,使用`lsb_release -ds`命令检测当前系统的版本,并将结果赋值给变量`UI_system`,并输出系统版本。
然后,使用`mkdir -p`命令在用户的主目录下创建一个名为`bin`的目录(如果不存在的话)。
最后,使用`cd`命令切换到`~/bin`目录,并执行`git clone`命令来克隆指定的Git仓库到当前目录。
请注意,上述代码假设您的系统中已经安装了`lsb_release`命令和`git`工具。如果这些工具在您的系统中不存在,您可能需要先安装它们或使用适合您系统的替代工具。