使用bash,我有一个我想用来替换int的字符串列表。这是一个例子:
day1=Monday day2=Tuesday day3=Wednesday day4=Thursday day5=Friday day6=Saturday day7=Sunday
如果我有一个int,$ dow,代表星期几,我该如何打印实际字符串?我试过这个:
echo ${day`echo $dow`}
但得到“错误替代”的错误。我该如何工作?注意:我可以将$ day变量更改为列表或其他内容。
答案 0 :(得分:1)
是的,以数组形式执行此操作最简单:
day=([1]=Monday [2]=Tuesday ...)
echo "${day[dow]}"
答案 1 :(得分:1)
case $dow in
[1234567]) eval echo '$day'$dow ;;
esac
我不想因为“eval”的不安全使用而大喊大叫: - )
这可能是一种更“现代”的方式。
答案 2 :(得分:0)
您可以使用变量间接:
day_var=day$dow
echo ${!day_var}
但你应该考虑使用数组:
days=("Monday" "Tuesday" "Wednesday" "Thursday" "Friday" "Saturday" "Sunday")
echo ${days[$[$dow-1]]}
答案 3 :(得分:0)
1970年6月(你记得吗?)这个月从星期一开始:
for d in {1..7}
do
date -d 1970-06-0$d +%A
done