簡體   English   中英

以非交互方式將 arguments 傳遞給交互式程序

[英]Passing arguments to an interactive program non-interactively

我有一個 bash 腳本,它使用read命令以交互方式讀取 arguments 到命令,例如是/否選項。 有沒有辦法在將默認選項值傳遞為 arguments 的非交互式腳本中調用此腳本?

這不僅僅是我必須傳遞給交互式腳本的一個選項。

很多種方法

管道您的輸入

echo "yes
no
maybe" | your_program

從文件重定向

your_program < answers.txt

使用此處的文檔(這可能非常易讀)

your_program << ANSWERS
yes
no
maybe
ANSWERS

使用此處的字符串

your_program <<< $'yes\nno\nmaybe\n'

對於更復雜的任務, expect ( http://en.wikipedia.org/wiki/Expect )。 它基本上模擬了一個用戶,你可以編寫一個腳本來對特定的程序輸出和相關的東西做出反應。

這也適用於像ssh這樣禁止向其輸入密碼的情況。

您可以將數據放在文件中並像這樣重新定向它:

$ cat file.sh
#!/bin/bash

read x
read y
echo $x
echo $y

腳本數據:

$ cat data.txt
2
3

執行腳本:

$ file.sh < data.txt
2
3

只是想再添加一種方式。 在別處找到的,很簡單。 假設我想在命令行中為命令“execute_command”的所有提示傳遞“是”,然后我只需將“是”傳遞給它。

yes | execute_command

這將使用是作為所有是/否提示的答案。

您還可以使用 printf 將輸入通過管道傳輸到您的腳本。

var=val
printf "yes\nno\nmaybe\n$var\n" | ./your_script.sh

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM