我想传递一个不带引号的参数(默认情况下,JQ arg具有双引号),因为它应该用作过滤器。例如
propt='.properties'
final=($(jq -r -c --arg p $propt '$p' sample.json))
echo $final
sample.json
{
"type": "object",
"description": "Contains information",
"properties": {
"type": {
"description": "Type"
}
}
}
因此最终它打印出.properties
而不是预期的{"type":{"description":"Type"}}
我为此使用bash外壳。
请让我知道我在做什么错。
答案 0 :(得分:3)
如果我对您的理解正确,那么您就会以为需要在<Button>
中设置变量,而不仅仅是让shell进行扩展,从而使您陷入困境:
import React from "react";
class Search extends React.Component {
constructor(display) {
super(display);
this.state = {
searchingText: ""
};
}
handleChange(event) {
let searchingText = event.target.value;
this.setState({
searchingText: searchingText
});
if (searchingText.length > 2) {
this.props.onSearch(searchingText);
}
}
handleKeyUp(event) {
if (event.keyCode === 13) {
this.props.onSearch(this.state.searchingText);
}
}
render() {
const styles = {
fontSize: "1.5em",
width: "90%",
maxWidth: "350px"
};
return (
<input
type="text"
onKeyUp={this.handleKeyUp}
onChange={() => this.handleChange()}
placeholder="Tutaj wpisz fraze"
style={styles}
value={this.state.searchTerm}
/>
);
}
}
输出:
jq
请注意,$ foo上的双引号仍然允许外壳程序将变量扩展为.properties。也就是说,您可能不安全地使用:% foo='.properties'
% jq -r -c "$foo" sample.json
答案 1 :(得分:1)
您不能以这种方式使用--arg
。 --arg
的值是一个字符串,而不是jq过滤器表达式。如果您执行--arg p .properties
,则$p
将包含字符串".properties"
,它将不会被视为程序。通过定义函数,找到一种不同的方式来做您想要的事情。
例如,如果您为程序加上def p: .properties;
前缀,则可以像现在使用.|p
那样在程序中使用$p
,它将访问{ {1}}在上下文中具有任何值。
答案 2 :(得分:0)
由于jq没有“ eval”功能,因此在jq中以编程方式指定路径的合适方法是将JSON数组与jq的ipmo activedirectory
Add-type -assemblyName Microsoft.VisualBasic
Add-Type -AssemblyName System.Windows.Forms
$userref = [Microsoft.VisualBasic.Interaction]::Inputbox("Enter username
", "Prime User")
$usertar = [Microsoft.VisualBasic.Interaction]::Inputbox("Enter username",
"Target")
$userref, $usertar | foreach {
if ([bool](Get-ADUser -Filter {samaccountname -eq $_}) -ne $true) {
[System.Windows.Forms.MessageBox]::Show("This user does not exist!")
}
else {Write-Host "User Ok"}
}
和getpath
内置插件结合使用
因此,在您的情况下,您可以使用--argjson命令行选项传递感兴趣的路径,例如
setpath
,您的jq程序将使用-—argson p '["properties"]'
。
不用说,这种方法适用于任意嵌套的路径。