为简单起见,我想做:
echo cart | assign spo;
echo $spo
Run Code Online (Sandbox Code Playgroud)
输出:购物车
是否assign存在这样的应用程序?
我知道使用替换来做到这一点的所有方法。
Bru*_*ger 18
你可以做这样的事情,如果你使用bash:
echo cart | while read spo; do echo $spo; done
Run Code Online (Sandbox Code Playgroud)
不幸的是,变量“spo”不会存在于 while-do-done 循环之外。如果您可以在 while 循环中完成您想做的事情,那就行了。
实际上,您几乎可以在 ATT ksh(不是在 pdksh 或 mksh 中)或在神话般的 zsh 中执行上面写的几乎完全相同的操作:
% echo cart | read spo
% echo $spo
cart
Run Code Online (Sandbox Code Playgroud)
因此,另一种解决方案是使用 ksh 或 zsh。
Sté*_*las 12
echo cart | { IFS= read -r spo; printf '%s\n' "$spo"; }
Run Code Online (Sandbox Code Playgroud)
只要只输出echo一行,就可以工作(将没有尾随换行符的输出存储到spo变量中)echo。
你总是可以这样做:
assign() {
eval "$1=\$(cat; echo .); $1=\${$1%.}"
}
assign spo < <(echo cart)
Run Code Online (Sandbox Code Playgroud)
以下解决方案适用于bash脚本,但不适用于bash提示符:
shopt -s lastpipe
echo cat | assign spo
Run Code Online (Sandbox Code Playgroud)
或者:
shopt -s lastpipe
whatever | IFS= read -rd '' spo
Run Code Online (Sandbox Code Playgroud)
要存储的输出whatever上升到第NULL字符(bash变量不能存放反正NULL字符)的$spo。
或者:
shopt -s lastpipe
whatever | readarray -t spo
Run Code Online (Sandbox Code Playgroud)
将 的输出存储whatever在$spo 数组中(每个数组元素一行)。
| 归档时间: |
|
| 查看次数: |
69788 次 |
| 最近记录: |