似たような質問がたくさんあることを知っていますが、答えが見つかりません。
他のスクリプトを呼び出すためにソーススクリプトのこのポイントに到達するためのいくつかの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
。