我知道有很多类似的问题,但我无法找到我的答案:
我有几个 if 和检查以到达源脚本的这一点来调用另一个脚本
source ./call.sh
在目标脚本中,我想从用户那里获取用户名:
#!/bin/bash
passDir="/etc/passwd"
while true
do
#propmt for username
read -p "Enter username : " username
egrep "^$username" $passDir >/dev/null
if [ $? -eq 0 ]; then
echo "$username exists!"
else
userName=$username
break
fi
done
但它不会等我输入任何内容。它进入循环并打印存在,除非我按 Ctrl+CI,如果有人能给我建议如何做到这一点,我将不胜感激。在我的目标脚本中,我有许多其他提示来获取用户的输入当我单独运行目标脚本时,它工作正常。
答案1
您必须编写一个额外的脚本并与source command
您的脚本进行调用和交互,您必须使用expect interpreter
例如:
#!/usr/bin/env expect
send 'username\r'
当然,您需要将一些内容传递给您的脚本并使用它的return status
.