[英]/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.