以下代码工作正常,直到串联(第二步) - 我需要串联到" physid"例如 - 文件名是UM123456789.2015035-我正在提取M123456789,并且我需要在最后将" Helo" 附加到最后。但是根据下面的脚本 - 当我使用串联时,它正在覆盖M123456789,因此输出因此变为 helo456789 。我试图将输出作为 - m123456789helo - 我要在哪里出错?
#!bin/sh
absolutePath=/abc/data/abc_unix/stg/decrypt/*.*
filepath=$(echo ${absolutePath%.*})
echo "$filepath"
filenameext=$(echo ${filepath#/abc*decrypt/})
echo "$filenameext"
file=$(echo ${filenameext#.*})
echo "$file"
extract_physId=$(echo ${file:1:9})
physId=$(echo ${extract_physId})
echo "$physId"
key="$physId"HELO
echo "$key"
字符串的开头被Helo覆盖,因为字符串以托架返回结束。在输入文件或sed 's/r$//'
dos2unix
顺便说一句,您在那里有很多不必要的echo
s。我会提供一个改写:
#!bin/sh
for file in /abc/data/abc_unix/stg/decrypt/*.*; do
filename=$(basename "$file") # remove the directory
filename=${filename%.*} # remove the extension
physId=${filename#?} # remove the first char
key="${physId}HELO"
echo "$key"
done
将#!/bin/sh
更改为#!/bin/bash
或:
更改
extract_physId=$(echo ${file:1:9})
to
extract_physId=$( echo "${file}" | cut -c1-10)
SH 不认识${file:1:9}