我想編寫一個shell腳本,我將從用戶那裏接受一行輸入,它將包含一些xxx.cpp作爲文件名。 我想在另一個變量中獲得「xxx」。 例如linux shell腳本:從用戶輸入字符串獲取文件名
如果用戶輸入給如:
some params path/to/file/xyz.cpp more p/ara/ms
我想要得到它 「的.cpp」 之前和 「/」 前 「的.cpp」
我想編寫一個shell腳本,我將從用戶那裏接受一行輸入,它將包含一些xxx.cpp作爲文件名。 我想在另一個變量中獲得「xxx」。 例如linux shell腳本:從用戶輸入字符串獲取文件名
如果用戶輸入給如:
some params path/to/file/xyz.cpp more p/ara/ms
我想要得到它 「的.cpp」 之前和 「/」 前 「的.cpp」
使用basename [param] [.ext]
的最後一次出現後發生的xyz。
echo `basename $1 .cpp`
其中1是path/to/file.xyz
在參數列表中的索引。
我沒有得到「index of」的含義..?如果我輸入爲: [some params path/to/file/ – 2012-03-11 03:59:51
@NDThokare,如果它是完整的命令行,其中一些是運行的程序,那麼'some'的索引是0,'params'的索引是1,'path/to/file/xyz.cpp'的索引是1。是2. – khachik 2012-03-11 10:07:51
下面是一個示例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
如果我運行這個腳本,它不會在命令行上進行任何輸入。 我想讀取用戶的輸入並用它來提取文件名。 – 2012-03-10 19:48:11
好的我修好了,所以它會提示你輸入,而不是使用腳本 – amdn 2012-03-10 21:41:00
的參數給出錯誤:[[:未在「完成」行找到 – 2012-03-11 03:53:27
[提取文件名和擴展在bash]的可能重複(http://stackoverflow.com/questions/965053/extract-filename-and-extension-in-bash) – 2012-03-10 19:00:09
如果輸入是什麼「CP/b .cpp/a.cpp.f.cpp/foo.cpp cpp/cpp.cpp/b.cpp「你需要澄清你所要求的。 – 2012-03-11 03:37:01
它不會發生.. 用戶只會給一個***。cpp filename – 2012-03-11 03:55:44