是否有使用sh编写以下脚本的等效方法?我可以用bash来做,但是需要一个sh版本。
= f.input :notional, label: 'Notional', as: :string, input_html: {data: {mask_suffix: 'INR'}, class: 'form-control inputmask'}
输出:
#!/bin/bash
REPOS="one two"
export onefirst="one_first"
export onelast="one_last"
export twofirst="two_first"
export twolast="two_last"
echo $onefirst
for name in $REPOS
do
temp=${name}first
echo ${!temp} <--- bad substitution if I use sh
done
答案 0 :(得分:1)
chepner指出,您需要评估。比他的版本略干净:首先构造表达式,然后对其求值:
echo again $onefirst
for name in $REPOS; do
temp="\$${name}first" # Construct expression
eval "echo $temp" # Evaluate expression
done
这使得在不添加反斜杠的情况下更容易存储评估结果:
echo again $onefirst
for name in $REPOS; do
temp="\$${name}first" # Construct expression
res=`eval "echo $temp"` # Evaluate and store
echo "$res"
done
答案 1 :(得分:0)
在POSIX sh
中完成此操作的唯一方法是使用eval
,这意味着您必须非常确保自己知道{{1 }}是在使用它之前。
temp