![](/img/trans.png)
[英]How do I pass arguments to my functions in a zsh/bash script?
[英]How do I pass arguments to a bash script using a pipe?
我想通過管道或其他方法將參數傳遞給此腳本中的read命令。
我在腳本中的命令是
read -p "Change Parameters?
while [ $REPLY != "n" ]
do
if [ $REPLY == "a" ]
then
..
..
if [ $REPLY =="j" ]
..
done
如果有任何用處,read命令將顯示在腳本的第48行上
我試過了
./script argument1 argument2 | bash /dev/stdin "n"
導致
Change Parameters? /dev/stdin: line 1: Default: command not found
/dev/stdin: line 2: a: command not found
/dev/stdin: line 3: b: command not found
/dev/stdin: line 4: c: command not found
/dev/stdin: line 5: d: command not found
/dev/stdin: line 6: e: command not found
/dev/stdin: line 7: f: command not found
/dev/stdin: line 8: g: command not found
/dev/stdin: line 9: h: command not found
/dev/stdin: line 10: i: command not found
/dev/stdin: line 11: j: command not found
/dev/stdin: line 12: n: command not found
然后停下來
我只想將字母n傳遞給此命令,並使腳本繼續進行到最后。
您的管道是錯誤的方法,將n
傳遞給您需要編寫的腳本
echo "n" | ./script argument1 argument2
另一個例子:
echo "abcd" | { read -p "Change Parameters?" b; echo $b; }
輸出:
abcd
在第二個示例中, { ... }
部分是您的腳本,將echo "abcd"
通過管道傳遞到腳本, read
獲取“ abcd”(未顯示提示Change parameters?
),將其保存在變量$b
,然后$b
被回顯。
如果您不想遵循echo方法(將某些東西回顯並將其通過管道傳遞到腳本中),則只需更改命令即可:
./script argument1 argument2 | bash /dev/stdin "n"
至
./script argument1 argument2 <<<"n"
要么
./script argument1 argument2 <<<"$var"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.