bash实现目录中的变量

时间:2015-09-24 16:17:08

标签: bash variables

我有一个序列号:SX410-251509-0171

在我的代码中,我提取了2位数年份(上例中为15位)和2位数周(上例中为09),并希望在文件目录中使用这些年份。

#! /bin/bash           

year=${serial:8:2}
week=${serial:10:2}
dir="/home/jbon/20$year/$week/$serial/run0/output_log"
echo $dir    

当我运行此代码时,我得到以下输出:

/ run0 / output_log015 / 09 / SX410-251509-0171

我猜这个问题是关于我如何使用字符串中的变量。

1 个答案:

答案 0 :(得分:1)

听起来您运行的脚本包含sh,而不是bash,而sh链接指向bash以外的无法识别的shell子串扩展运算符。但是,您可以以符合POSIX的方式重写它:

yearweek=${serial##*AB}   # Drop everything up to and including AB
yearweek=${yearweek%%-*}  # Drop everything from - onward
year=${yearweek%??}       # Drop the two-digit week
week=${yearweek#??}       # Drop the two-digit year