該語法會是這樣的
printf '%s\n' "$string1" "$string2" | ./script2.sh filename"$i"
您也可以使用此文件:
./script2.sh filename"$i" <<____HERE
$string1
$string2
____HERE
有些人會告訴你echo
,但它有各種各樣的可移植性問題等; printf
統一標準,更安全。但是,如果它只有兩個字符串的靜態行,你當然可以做
echo 'string1
string2' | ./script2.sh filename "$i"
(是的,這是一個單引號字符串在中間換行)或稍差有效
(echo string1; echo string2) | ./script2.sh filename"$i"
的管道的一般語法是command1 | command2 | command...
,所以你不能工作,除非string1
是一個產生所需輸出的命令。 (這不是不可能的,但在這種情況下可能不是一個好主意。)但最重要的是,你將腳本的輸出傳送到string1
,你明顯想要反過來。
任何產生合適輸出的命令都可以用來給管道輸送;如果您需要大量輸入,請嘗試yes
,專門爲此目的而存在;
yes string1 | head -n 2 | ./script2.sh filename"$i"
這裏,yes
打印的string1
線(以及,當管道被關閉head
它結束)的環形序列; head
只穿過前兩個。
你在使用'|'的呢? –
爲什麼不只是導出兩個環境變量?你能不能顯示script2.sh以更好地理解你想要做什麼? – spider
「兩個輸入變量」是什麼意思? 'script2.sh'是否從標準輸入中讀取兩行?它是否假設其環境中會存在特定變量? – chepner