我想用英语和法语列出一周中的所有日子(请参见下面的示例图片),但我发现自己正在为一个甚至简单的问题编写一些复杂的语法。
对于这种情况是否有更清洁和更好的解决方案?
这是我的 bash 脚本
#!/bin/bash
en_weeks='mon tue wed thu fri sat sun'
fr_weeks='lun mar mer jeu ven sam dim'
for i in $(seq 0 6)
do
set $en_weeks
shift $i
echo -n "$1 "
set $fr_weeks
shift $i
echo $1
done
这是脚本的输出:
最佳答案
1) POSIX,没有bash主义:
en_weeks="mon tue wed thu fri sat sun"
fr_weeks="lun mar mer jeu ven sam dim"
echo $fr_weeks | tr ' ' '\n' | \
for i in $en_weeks ; do read x ; echo $i $x ; done
不需要 seq,一个列表直接通过 for 逐项列出,循环内 read 获取另一个列表——管道到for 循环就像管道到 while 循环一样工作。
2) 非常简短,使用 BSD reshape util rs 转置数据:
echo -e $fr_weeks'\n'$en_weeks | rs -T
关于linux - 决定如何使用 set 和 shift 的更清洁的解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36550722/