我有一个序列号: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
我猜这个问题是关于我如何使用字符串中的变量。
答案 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