用enviornment变量替换curl请求中的变量

时间:2017-02-03 08:11:26

标签: linux unix curl

我必须要求卷曲请求

export TYPE='ABC'

curl -XPOST "$URL/_path/ -d @data.json"

{ "type": "<to be decided by env variable>", ... ... }

data.json看起来像

protected function getFinalMock($originalObject) { if (gettype($originalObject) !== 'object') { throw new \Exception('Argument must be an object'); } $allOriginalMethods = get_class_methods($originalObject); // some "unmockable" methods will be skipped $skipMethods = [ '__construct', 'staticProxyConstructor', '__get', '__set', '__isset', '__unset', '__clone', '__sleep', '__wakeup', 'setProxyInitializer', 'getProxyInitializer', 'initializeProxy', 'isProxyInitialized', 'getWrappedValueHolderValue', 'create', ]; // list of all methods of Query object $originalMethods = []; foreach ($allOriginalMethods as $method) { if (!in_array($method, $skipMethods)) { $originalMethods[] = $method; } } $reflection = new \ReflectionClass($originalObject); $parentClass = $reflection->getParentClass()->name; // Very dummy mock $mock = $this ->getMockBuilder($parentClass) ->disableOriginalConstructor() ->setMethods($originalMethods) ->getMock(); foreach ($originalMethods as $method) { // skip "unmockable" if (in_array($method, $skipMethods)) { continue; } // make proxy call to rest of the methods $mock ->expects($this->any()) ->method($method) ->will($this->returnCallback( function (...$args) use ($originalObject, $method, $mock) { $ret = call_user_func_array([$originalObject, $method], $args); // mocking "return $this;" from inside $originalQuery if (is_object($ret) && get_class($ret) == get_class($originalObject)) { if (spl_object_hash($originalObject) == spl_object_hash($ret)) { return $mock; } throw new \Exception( sprintf( 'Object [%s] of class [%s] returned clone of itself from method [%s]. Not supported.', spl_object_hash($originalObject), get_class($originalObject), $method ) ); } return $ret; } )); } return $mock; }

在curl请求中替换了URL环境变量。 但是我想用enviornment变量$ TYPE

替换data.json中的type值

如何在不创建可执行文件的情况下完成此操作。

1 个答案:

答案 0 :(得分:0)

使用sed将占位符替换为实际值。 使用-d @-选项curl可以从stdin获取发布数据,因此您可以将sed直接传入其中。像这样:

sed -e "s#<to be decided by env variable>#${TYPE}#" data.json | curl "$URL/_path/" -XPOST -d @-