function f() {
for arg; do
echo "$arg"
done
}
f 'hello world' 'second arg' '3rdarg'
Run Code Online (Sandbox Code Playgroud)
这工作正常:
hello world
second arg
3rdarg
Run Code Online (Sandbox Code Playgroud)
但是我什么时候分配$@一些变量,然后出错:
function f() {
local args="$@"
for arg in "$args"; do
echo "$arg"
done
}
Run Code Online (Sandbox Code Playgroud)
hello world second arg 3rdarg
Run Code Online (Sandbox Code Playgroud)
当我取消对的$args引用时,则每个参数都被拆分成一个单词:
hello
world
second
arg
3rdarg
Run Code Online (Sandbox Code Playgroud)
最后,我想知道是否存在定义$ @之类的变量的方法。任何答复将不胜感激。
最近我想出了一些mysql性能问题,这里是查询:
select
assoc.id as id,
parentNode.id as parentNodeId,
parentNode.version as parentNodeVersion,
parentStore.protocol as parentNodeProtocol,
parentStore.identifier as parentNodeIdentifier,
parentNode.uuid as parentNodeUuid,
childNode.id as childNodeId,
childNode.version as childNodeVersion,
childStore.protocol as childNodeProtocol,
childStore.identifier as childNodeIdentifier,
childNode.uuid as childNodeUuid,
assoc.type_qname_id as type_qname_id,
assoc.child_node_name_crc as child_node_name_crc,
assoc.child_node_name as child_node_name,
assoc.qname_ns_id as qname_ns_id,
assoc.qname_localname as qname_localname,
assoc.is_primary as is_primary,
assoc.assoc_index as assoc_index
from
alf_child_assoc assoc
join alf_node parentNode on (parentNode.id = assoc.parent_node_id)
join alf_store parentStore on (parentStore.id = parentNode.store_id)
join alf_node childNode on (childNode.id = assoc.child_node_id) …Run Code Online (Sandbox Code Playgroud) 我注意到FreeBSD代码/bin并且/usr/bin有一些修复使用exit而不是return,这是什么意思?
我所有的想法都是return声明可能导致vfork(2)损坏堆栈帧,这是唯一的原因吗?如果这是真的,那么为什么只是在命令部分/bin和/usr/bin得到修复,不是所有的人?
zsh内置函数print具有-P执行快速扩展的选项,可用于获取当前时间。我想知道是否还有其他方法可以实现这一目标?那其他的壳呢?
我在一本名为'High-order Perl`的书中读到了这段代码,我只是不明白为什么要使用grep,但如果我改成第一个语句,事情就会出错,有人可以解释一下吗?谢谢.
上下文:代码位于第6章和第5节中
sub union {
my ($h, @s) = grep $_, @_;
return unless $h;
return $h unless @s;
node(head($h), promise {
union(@s, tail($h));
});
}
Run Code Online (Sandbox Code Playgroud)