簡體   English   中英

/bin/sh 替代 /bin/bash 中的 ${!#}

[英]/bin/sh alternative to ${!#} in /bin/bash

我試圖了解/bin/sh /bin/bash${!#}的替代方案是什么?

我知道${!#} ,它在/bin/bash上評估為${0}但我怎樣才能使用/bin/sh得到它?

您可以在 sh 中獲得的最接近的近似值是基於eval的解決方案。

eval echo "\$${#}"

但請記住,如果不小心使用 eval 是非常危險的。 我建議在實施之前考慮是否需要間接。

例如,上面的代碼基本上簡化為“打印最后一個參數”。 您可以在不使用間接或 eval 的情況下編寫此代碼:

for arg in "${0}" "${@}" ; do
:
done
echo "${arg}"

在這種情況下使用eval沒有任何問題。

不過,您應該將$#包裹在花括號中; 否則當位置參數的個數超過九個時它將不起作用。 看:

$ set -- a b c d e f g h i j
$ eval "arg=\$$#"
$ echo "$arg"
a0
$
$ eval "arg=\${$#}"
$ echo "$arg"
j

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM