2017-04-12 15 views
-1

執行過程中,我有例如SCRIPT1代碼如下:如何將值傳遞到另一個代碼的Linux

  1. 你好我是約翰
  2. 你好,這是邁克爾
  3. 你好,這是安德魯

這段代碼是無法編輯的。但是,如果我們輸入1,它將打印1. Hello this is John,依此類推。

我想在bash中編寫一個腳本,它會自動將輸入與用戶手動輸入。

我已經試過這樣 創建的文件test.txt

1 
2 
3 

並執行這樣:./script1 < test.txt,但它一直在迭代像無限循環。

任何人都可以試試這個。我只想要3個輸出。

+0

是'script1'從'stdin'閱讀或預期在命令行參數?我猜它不會從'stdin'讀取,否則輸入重定向會起作用,除非您希望一次讀取1個數字,但輸入文件在一行中有3個數字。腳本是否需要像'./script1 1 2 3'那樣傳遞給它的多個參數?或者它一次只接受1個參數? – alvits

+0

這不是一個代碼寫入服務。你到目前爲止嘗試了什麼?發佈您的代碼!當你運行它時發生了什麼?你預期會發生什麼?你有什麼特別的問題? https://stackoverflow.com/help/mcve – Robert

回答

0

我對你的問題的解讀是,你試圖接受來自標準輸入的輸入,但是你有不可變的代碼,它需要位置參數。如果您發佈了無法修改的腳本的相關部分,這將會很有幫助。

所以,我會假設你有這樣的事情,它接受位置參數:

#!/bin/bash 

names=("" John Michael Andrew) 

say_hello_by_id() { 
    while [ $# -gt 0 ]; do 
     echo "Hello this is ${names[$1]}" 
     shift 
    done 
} 

echo "$(say_hello_by_id [email protected])" 

然後,你需要寫一個墊片,從標準輸入讀取值,並將它們作爲參數:

while read input; do 
    ./existing.sh "$input" 
done 

然後做:

./shim.sh < inputs.txt 
+0

OP的輸入文件可能包含一行「1 2 3」,但您的代碼需要每行1個數字。 – alvits

0
find_user(){ 
while read -r values 
do 
if [ $values == $1 ]; then 
echo "hello $1"; 
fi 
done < $2 
} 
find_user $1 $2 

./find_user.sh JHON file.txt的

+0

包括關於你的代碼如何工作或者它究竟做什麼的解釋。 – CurseStacker

相關問題