linux shell脚本:从用户输入字符串中获取文件名

时间:2012-03-10 18:50:18

标签: linux string shell scripting substring

我想编写一个shell脚本,我将从用户那里获取一行输入,其中包含一些xxx.cpp作为文件名。 我想在另一个变量中得到“xxx”。 e.g。

如果用户输入:

some params path/to/file/xyz.cpp more p/ara/ms

我希望得到xyz,它出现在“.cpp”之前,并且在“.cpp”之前的“/”之后出现

2 个答案:

答案 0 :(得分:1)

使用basename [param] [.ext]

echo `basename $1 .cpp`

其中1是参数列表中path/to/file.xyz的索引。

答案 1 :(得分:0)

这是一个示例bash脚本,用于提示用户输入文件列表并过滤所有输入,并仅显示以“.cpp”结尾的文件的基本名称(删除.cpp)且可读

#!/bin/bash
echo Enter list of files:
read list_of_files
for file in $(echo $list_of_files); do
    if echo $file | grep '\.cpp$' > /dev/null; then
        if [[ -r $file ]]; then
            fn=$(basename ${file})
            fn=${fn%.*}
            echo $fn
        fi
    fi
done