我正在尝试执行一个简单的脚本,使用从文件输入的服务器名称上的svmatch
来捕获多个服务器的详细信息。
#!/bin/sh
while read line; do
svmatch $line
done < ~/svr_input;
svmatch
命令在作为备用命令执行时没有问题。
答案 0 :(得分:9)
从/dev/null
:
svmatch $line </dev/null
否则,svmatch能够使用stdin(当然,这是剩余行的列表)。
另一种方法是使用除默认值stdin之外的文件描述符:
#!/bin/sh
while IFS= read -r line <&3; do
svmatch "$line"
done 3<svr_input
...如果使用bash而不是/bin/sh
,你还有其他一些选择;例如,bash 4.1或更新版本可以分配一个免费的文件描述符,而不是要求特定的FD编号进行硬编码:
#!/bin/bash
while IFS= read -r -u "$fd_num" line; do
do-something-with "$line"
done {fd_num}<svr_input