How to call a bash script from another script?
我有两个非常简单的脚本。我问过这个问题,但人们认为我是在不同的平台上做的。实际上,这两个脚本在同一个文件夹中。
一个是source.sh。
1 2 3 4 | #!/bin/bash echo"start" ./call.sh echo"end" |
第二个是call.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #!/bin/bash passDir="/etc/passwd" while read line do while true do echo"prompt" #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 done < user.txt |
而且user.text文件在两行中只有两个单词
1 2 | Hello world |
输出:
1 2 3 4 5 6 7 8 9 10 11 12 | exisats! prompt exisats! prompt exisats! prompt exisats! prompt exisats! prompt exisats! prompt |
在我按下ctrl+d键之前,我非常感谢有人能告诉我如何解决这个问题。
您可以将其简化为一个最小的示例:
1 2 3 4 5 6 7 8 9 10 11 | #!/bin/bash while read line do echo line is $line echo"prompt" read -p"Enter username :" username echo username is $username done < user.txt |
现在问题很明显:脚本读取
只有
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #!/bin/bash exec 3< user.txt # open the file, give it File Descriptor 3 while read -r -u3 line do echo line is $line echo"prompt" read -p"Enter username :" username echo username is $username done exec 3<&- # close the file |