2

我有以下 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 行,没有什么是行不通的。

所以我想知道有什么区别?

谢谢。

4

2 回答 2

2

不; 在第 4 行中,您只是通过“回显”命令来显示命令;第 6 行实际执行命令。

例如

$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).
于 2012-04-08T19:08:43.583 回答
1

$query第 5 行作为单个参数传递。第 6 行将每个单词 of$query作为单独的参数传递,"在第一个的开头和"最后一个的结尾。把你的论点放在一个数组中。

于 2012-04-08T20:25:34.660 回答