我有一个以下bash脚本:
1 #!/bin/bash
2 query='query= SELECT * WHERE { ?s ?p ?o } LIMIT 5'
3 cmd="curl $1 -s -d \"$query\""
4 echo "$cmd"
5 # curl $1 -s -d "$query"
6 # $cmd
第5和第6行必须做同样的事情。当我取消注释第5行时,一切正常。但是对于第6行,没有什么不起作用。
所以我想知道差异是什么?
感谢。
答案 0 :(得分:2)
没有;在第4行,你只是通过" echo"来显示命令;第6行实际执行命令。
E.g。
$eg="ls /var/www"
echo $eg #This would literally return ls /var/www"
$eg #This would return the directory listing of /var/www/ (actually run the command).
答案 1 :(得分:1)
第5行将$query
作为单个参数传递。第6行将$query
的每个单词作为单独的参数传递,第一行的开头为"
,最后一个的末尾为"
。 Put your arguments in an array instead.