如何从bash中的第二个文件sh中读取值?

时间:2019-07-03 10:08:11

标签: linux bash sh

我正在设置一种解决方案,以从蜂窝路由器捕获信息。在我的脚本中,根据路由器型号,我有一个main.sh启动其他文件(* .sh)。

因此,如果要捕获有关cisco路由器的信息,请执行main.sh,而该InformationCisco.sh正在执行 read -p or echo -n then read

在最后一个shell文件中,我必须读取一个值,但

./InformationCisco.sh

不起作用。

main.sh


sshpass -p "$MDPssh" ssh -o StrictHostKeyChecking=no admin@"$IPaddress"  "cat /proc/net/arp" > "$MACtxt"
testMAC=$(awk 'NR==3{print $4}' $MACtxt | cut -d ' ' -f23)

if [ -z "$testMAC" ]; then

    MacAddressPlayer=$(awk 'NR==2{print $4}' $MACtxt | cut -d ' ' -f23)
    echo "MAC address Player : $MacAddressPlayer"

else

    echo "2 MAC address in ARP"
    echo "You have to find the correct MAC address for the player"
    cat $MACtxt
    read -p "Enter the right MAC address : " MacAddressPlayer
    MAC_Choice $typeMAC
    echo "MAC address Player : $MacAddressPlayer"

fi

编辑:信息Cisco.sh

df
  cluster load_date budget actual fixed_price
0       A  1/1/2014   1000   4000           Y
1       A  2/1/2014  12000  10000           Y
2       A  3/1/2014  36000   2000           Y
3       B  4/1/2014  15000  10000           N
4       B  4/1/2014  12000  11500           N
5       B  4/1/2014  90000  11000           N
6       C  7/1/2014  22000  18000           N
7       C  8/1/2014  30000  28960           N
8       C  9/1/2014  53000  51200           N

我阅读了路由器的ARP表以捕获与其连接的设备。为此,我使用sshpass来输入密码(不用担心密码不清楚,这只是一种简化)。 在另一个正在运行的外壳文件中时,读取功能不会停止。

我应该更改什么,以便读取将等待输入?

2 个答案:

答案 0 :(得分:0)

在main.sh中尝试:

source InformationCisco.sh

那样,它将不会在单独的进程中运行脚本(该进程可能未连接到您的会话)。

答案 1 :(得分:0)

在您的上下文中,有可能某个字符\n已发送到该进程的标准输入,而read -p可能会立即使用它。