将shell参数作为stdin传递给调用的程序

时间:2018-02-12 01:49:19

标签: bash shell eof

我试图运行一个程序,我的每个脚本的参数都作为stdin上的不同行传递。我目前的尝试涉及使用for循环,如下所示:

#!/bin/bash

[My Program] <<EOF
for i in "$@"
do
   $i
done

EOF

这不起作用 - 程序实际上接收for i in作为其输入的一部分,而不是自己给出参数列表。如何将其更改为功能?

1 个答案:

答案 0 :(得分:0)

为程序的stdin提供一个新行分隔的命令行参数列表,用于调用脚本:

#!/bin/sh
./your-program <<EOF
$(printf '%s\n' "$@")
EOF

...或者,与POSIX sh兼容的heredoc语法:

for

如果由于某种原因你确实想要使用#!/bin/sh ./your-program <<EOF $(for i; do echo "$i" done) EOF 循环,你可以这样做:

printf

...虽然注意到echo甚至可以替代var app = angular.module('myApp', []); app.config(function($sceDelegateProvider) { $sceDelegateProvider.resourceUrlWhitelist([ 'self', 'https://www.youtube.com/**' ]); }); app.controller('videoController', ['$scope', function MyCtrl($scope) { $scope.youtubevideo="https://www.youtube.com/embed/c-z9M6KZs_0"; $scope.getIframeSrc = function(src) { return src; }; } ]);;要了解原因,请参阅the POSIX spec for echo的“应用程序使用”部分。