将文件名的前4个字符存储到变量中

zyx*_*wyz 2 bash

这段代码是我写的脚本的一部分.现在,出于这个脚本的目的,我假设./src中只有一个文件,所以这个循环应该只执行一次.现在,在某个循环中,我想获取$ f(文件名)的前4个字符并将其存储在另一个变量中.我知道有cut命令,但我不确定是否或如何在这里使用,因为我认为cut用于文件的内容,而不是文件本身.

for f in `ls ./src`
do
    echo $f
    cd tmp
    f="../src/$f"
    sh "$f"
done
Run Code Online (Sandbox Code Playgroud)

Mic*_*eim 6

来自http://tldp.org/LDP/abs/html/string-manipulation.html

子串提取

${string:position} 在$ position从$ string中提取子字符串.

如果$ string参数是"*"或"@",那么这将从$ position开始提取位置参数[1].

${string:position:length} 从$ position的$ string中提取子字符串的$ length字符.

shortName=${f:0:4}
Run Code Online (Sandbox Code Playgroud)

玩得开心!


anu*_*ava 5

您可以使用纯 bash 方式:

${parameter:offset:length}
Run Code Online (Sandbox Code Playgroud)

即获取$HOME变量的第一个字符:

echo ${HOME:0:4}
Run Code Online (Sandbox Code Playgroud)

顺便说一句,您的脚本也有问题(永远不要解析 ls 输出)。应该是这样的:

for f in ./src/*
do
    echo $f
    cd tmp
    f="../src/$f"
    first4=${f:0:4}
    sh "$f"
done
Run Code Online (Sandbox Code Playgroud)