Comments (9)
其实我觉得让 grpc 接口里的 command 字段改为 []string 才是最好的, 完全不会出现任何歧义, 这是和 exec(2) 参数完全对应的.
如果保持现有的 string 类型手动切, 恐怕还要考虑 echo "a \"b"
这种引号中有转义引号的情况, 上面那段代码简单改改是不行的. 不如容我写一段没人能看懂的正则表达式.....
from core.
from core.
不过正则表达式也写出来了, 是这样的: [^'"\s]\S*|'(?:\\.|[^'])*'|"(?:\\.|[^"])*"
In [26]: re.findall(r'''[^'"\s]\S*|'(?:\\.|[^'])*'|"(?:\\.|[^"])*"''', r'''echo 'asdf asdf' 'ads' 'a\'a' "adsf" "12 1"
...: "as \" sdf"''')
Out[26]: ['echo', "'asdf asdf'", "'ads'", "'a\\'a'", '"adsf"', '"12 1"', '"as \\" sdf"']
from core.
from core.
fixed in #267
from core.
我也遇到类似问题,传入command无法正常读出参数。
core版本是v21.03.15
cli版本是v21.03.01
执行lambda输出
$eru-cli lambda --pod proxy --name test --file ./testab:/bin/testab "/bin/testab -a 'show me the money' -b 'operation'"
[cfdb5d301b8066956f7e546c723532796b7af1ec735fd1658e0b2fc04241d3f8] flag needs an argument: -b
[cfdb5d301b8066956f7e546c723532796b7af1ec735fd1658e0b2fc04241d3f8] Usage of /bin/testab:
[cfdb5d301b8066956f7e546c723532796b7af1ec735fd1658e0b2fc04241d3f8] -a string
[cfdb5d301b8066956f7e546c723532796b7af1ec735fd1658e0b2fc04241d3f8]
[cfdb5d301b8066956f7e546c723532796b7af1ec735fd1658e0b2fc04241d3f8] -b string
[cfdb5d301b8066956f7e546c723532796b7af1ec735fd1658e0b2fc04241d3f8]
直接执行binary
$./testab -a 'show me the money' -b 'operation'
a=show me the money,b=operation
testab的代码如下
package main
import (
"flag"
"fmt"
)
func main() {
var (
a, b string
)
flag.StringVar(&a, "a", "", "")
flag.StringVar(&b, "b", "", "")
flag.Parse()
fmt.Printf("a=%s,b=%s\n", a, b)
}
from core.
我也遇到类似问题,传入command无法正常读出参数。
core版本是v21.03.15
cli版本是v21.03.01
执行lambda输出$eru-cli lambda --pod proxy --name test --file ./testab:/bin/testab "/bin/testab -a 'show me the money' -b 'operation'" [cfdb5d301b8066956f7e546c723532796b7af1ec735fd1658e0b2fc04241d3f8] flag needs an argument: -b [cfdb5d301b8066956f7e546c723532796b7af1ec735fd1658e0b2fc04241d3f8] Usage of /bin/testab: [cfdb5d301b8066956f7e546c723532796b7af1ec735fd1658e0b2fc04241d3f8] -a string [cfdb5d301b8066956f7e546c723532796b7af1ec735fd1658e0b2fc04241d3f8] [cfdb5d301b8066956f7e546c723532796b7af1ec735fd1658e0b2fc04241d3f8] -b string [cfdb5d301b8066956f7e546c723532796b7af1ec735fd1658e0b2fc04241d3f8]
直接执行binary
$./testab -a 'show me the money' -b 'operation' a=show me the money,b=operation
testab的代码如下
package main import ( "flag" "fmt" ) func main() { var ( a, b string ) flag.StringVar(&a, "a", "", "") flag.StringVar(&b, "b", "", "") flag.Parse() fmt.Printf("a=%s,b=%s\n", a, b) }
我现在是对single word的input用strconv.Quote()
来avoid的
from core.
刚刚竟然发现了个bug少点的func https://github.com/google/shlex/blob/master/shlex.go
from core.
from core.
Related Issues (20)
- Etcd lease leak HOT 4
- Label filter support on agent HOT 6
- There might be bug when scheduling volumes HOT 6
- "not enough resource" should be more specific HOT 2
- eru core can't gracefully stop HOT 1
- try lock not covered by unittests
- BatchCreateAndDecr not covered by unittests
- Calculate Capacity Return negative Capacity HOT 1
- [RFC] Proposal for integration test HOT 2
- go-ping: Reachability detection issue HOT 1
- How to remove a volume on a node in Eru HOT 2
- New endpoints won't take effects until restarting eru-core HOT 2
- ERU resource to be plugable HOT 3
- Migrate selfmon to core HOT 4
- Eru "Pod Resource" function returned duplicated HOT 1
- Optimize the allocation algorithm of cpu / volume
- Use 3rd package to replace Goroutine Pool & WAL HOT 2
- Support platfrom Building
- WAL by 3rd pkgs
- logs-related
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from core.