将数字转换为bash中字符串的枚举

时间:2010-04-16 17:12:32

标签: bash

使用bash,我有一个我想用来替换int的字符串列表。这是一个例子:

day1=Monday
day2=Tuesday
day3=Wednesday
day4=Thursday
day5=Friday
day6=Saturday
day7=Sunday

如果我有一个int,$ dow,代表星期几,我该如何打印实际字符串?我试过这个:

echo ${day`echo $dow`}

但得到“错误替代”的错误。我该如何工作?注意:我可以将$ day变量更改为列表或其他内容。

4 个答案:

答案 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