我目前在从shell变量执行命令时遇到问题.
通常,以下工作符合预期:
COMMAND="echo A"
echo $COMMAND
$COMMAND
Run Code Online (Sandbox Code Playgroud)
生产:
echo A
A
Run Code Online (Sandbox Code Playgroud)
但如果我这样做
COMMAND="su aUser -s /bin/bash -c 'echo A'"
echo $COMMAND
$COMMAND
Run Code Online (Sandbox Code Playgroud)
我明白了
su aUser -s /bin/bash -c 'echo A'
Password:
A': -c: line 0: unexpected EOF while looking for matching `''
A': -c: line 1: syntax error: unexpected end of file
Run Code Online (Sandbox Code Playgroud)
如果我进入该行
su aUser -s /bin/bash -c 'echo A'
Run Code Online (Sandbox Code Playgroud)
直接按预期工作.
似乎我的假设是$ COMMAND等于输入内容,因为命令直接是错误的.
1)有谁知道如何从变量运行命令?
2)究竟有什么区别
COMMAND="command"
$COMMAND
Run Code Online (Sandbox Code Playgroud)
和
command
Run Code Online (Sandbox Code Playgroud)
?
我目前想知道git commit签名是如何工作的.
试图找到这个,但找不到任何确切的技术文档.我知道如何进行git commit签名,但我想知道git在签名提交时究竟做了什么.
究竟是什么签署?它是给定提交中存储库内的完整数据,所以提交消息等数据和所有文件的数据?或者只是提交指向包含的文件等?
我在使用openssl创建包含用于测试的crl分发点的x509证书时遇到问题.
我已经检查了文档,并为此找到了配置设置crlDistributionPoints.不幸的是,openssl总是生成x509版本1证书,而不是使用crl分发点而不是版本3证书.我确定我的命令或配置有问题,但仔细阅读文档并使用配置并没有帮助.考虑配置文件中的其他设置,因此我确信openssl使用该文件本身.
我正在使用该命令
openssl x509 -req -in $NAME.csr -out certs/$NAME.pem -days 3650 -CAcreateserial -CA cacert.pem -CAkey private/cakey.pem -CAserial serial
Run Code Online (Sandbox Code Playgroud)
我正在使用以下配置文件:
[ ca ]
default_ca = CA_default
[ CA_default ]
dir = /home/ca
database = $dir/index.txt
new_certs_dir = $dir/newcerts
certificate = $dir/cacert.pem
serial = $dir/serial
private_key = $dir/private/cakey.pem
RANDFILE = $dir/private/.rand
default_days = 3650
default_crl_days = 30
default_md = md5
policy = policy_any
email_in_dn = no
name_opt = ca_default
cert_opt = ca_default
copy_extensions = none
x509_extensions = extensions_section
[ extensions_section ] …
Run Code Online (Sandbox Code Playgroud) 我有一个报告使用以下行在页脚中显示"页面X的Y":
<textField isStretchWithOverflow="true">
<reportElement x="432" y="21" width="95" height="10" forecolor="#000000"/>
<textElement textAlignment="Right">
<font size="8"/>
</textElement>
<textFieldExpression><![CDATA[
$R{Report.Footer.Label.Page} + " " + $V{PAGE_NUMBER}
]]></textFieldExpression>
</textField>
<textField isStretchWithOverflow="true" evaluationTime="Report">
<reportElement x="527" y="21" width="20" height="10" forecolor="#000000"/>
<textElement textAlignment="Right">
<font size="8"/>
</textElement>
<textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression>
</textField>
Run Code Online (Sandbox Code Playgroud)
在我们的测试环境中一切正常.页码正确显示.
在客户环境中,事情很奇怪.不显示第二个textField.但是当我将第二个字段的评估类型更改为"现在"时,它会显示.
您是否知道什么可能导致我们和客户环境中的行为之间的差异?您是否有任何提示或者您是否知道有关使用评估类型现在和报告来渲染字段的任何详细信息可以帮助我解决问题?
我正在使用Jasper Reports 4.1.2.
编辑: 即使删除了变量,我也会使用
<textFieldExpression><![CDATA["T"]]></textFieldExpression>
Run Code Online (Sandbox Code Playgroud)
行为保持不变.使用evaluationTime ="Report"时,不显示第二个文本字段.用"现在"就可以了.
该mootools的文档指出,"该扩展属性应该是在一个类定义中的第一个属性." 经过几个小时的调查后,我偶然发现了mootools doc中的这一行.
虽然我的原始问题可以在设置扩展后作为第一个属性解决,但我不明白为什么.
根据js docs,对象中属性的顺序是引擎实现的主题.订单不保证任何形式.
那么为什么mootools依赖订单呢?试图阅读mootools代码并没有帮助我;).