我正在编写一个shell脚本来同步到github repo,启动构建,然后获取输出文件,重命名它,并将其移动到Apache可以看到的位置。
这是文件的重命名,我在shell脚本中没有最简单的方法(我几乎没有使用shell脚本的经验 - 我的理解
编译器将创建/var/espbuild/firstpart_1vXX_secondpart.bin
我需要将此文件移至:
/var/www/html/builds/espbuild/firstpart_1vXX_DATE_secondpart_postfix.bin
1vXX是版本号
DATE是日期+%m-%d
的输出postfix只是一个字符串。
我不确定从哪里开始这样的事情 - 我确信这是一种优雅的方式,因为这是shell脚本的用途,但我对shell脚本一无所知。
提前致谢
答案 0 :(得分:0)
您可以使用$()
:
DATE=$(date +%m-%d)
然后在新文件名中使用它:
INPUT=/var/espbuild/firstpart_1vXX_secondpart.bin
OUTPUT=/var/www/html/builds/espbuild/firstpart_1vXX_${DATE}_secondpart_postfix.bin
mv ${INPUT} ${OUTPUT}
编辑:要获得版本部分,这是一个简单的例子:
VERSION=$(grep -o 1v.. <<< ${INPUT})
然后OUTPUT
应设置为:
OUTPUT=/var/www/html/builds/espbuild/firstpart_${VERSION}_${DATE}_secondpart_postfix.bin
答案 1 :(得分:0)
你可以在BASH中使用它:
f='/var/espbuild/firstpart_1vXX_secondpart.bin'
s="${f##*/}"
s2=${s##*_}
dest="/var/www/html/builds/espbuild/${s%_*}_$(date '+%m-%d')_${s2%.*}_postfix.bin"
echo "$dest"
/var/www/html/builds/espbuild/firstpart_1vXX_07-14_secondpart_postfix.bin
cp "$f" "$dest"