unix / shell脚本中的字符串串联



以下代码工作正常,直到串联(第二步) - 我需要串联到" 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}

相关内容

  • 没有找到相关文章