2012-03-10 66 views
0

ユーザからの入力を受け入れるシェルスクリプトを作成したいと思います。これにはxxx.cppというファイル名が含まれています。 別の変数で "xxx"を取得したいとします。例: 私は ".cppファイル" の前と "/" の前に ".cppファイル"linuxシェルスクリプト:ユーザ入力文字列からファイル名を取得

+0

[ファイル名と拡張子をbashで抽出する]の可能な複製(http://stackoverflow.com/questions/965053/extract-filename-and-extension-in-bash) –

+0

入力が "cp/b .cpp/a.cpp.f.cpp/foo.cpp cpp/cpp.cpp/b.cpp "あなたが求めているものを明確にする必要があります。 –

+0

それは起こらないでしょう.. ユーザーは1つだけを与えます***。cppファイル名 –

答えて

1

利用basename [param] [.ext]の最後のoccurance後に発生し、XYZを取得したい

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

として、ユーザが入力を与える場合

echo `basename $1 .cpp` 

ここで、1は引数リストのpath/to/file.xyzのインデックスです。

+0

私は "インデックス"の意味を持っていません..? [いくつかのパラメータパス/ファイル/ xyz.cpp more p/ara/ms] インデックスとはどのようになるのですか? –

+0

@NDThokare、完全なコマンドラインであれば、いくつかは実行するプログラムで、 'some'のインデックスは0、' params'のインデックスは1、 'path/to/file/xyz.cpp'のインデックスです。 2である。 – khachik

0

ここでは、ユーザーにファイルのリストを入力してすべての入力をフィルタリングし、 '.cpp'で終わり(.cppを削除して)読み込み可能なファイルの基本名のみを表示するサンプルbashスクリプトを示します。

#!/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 
+0

このスクリプトを実行すると、コマンドラインで入力を受け付けない。 ユーザーからの入力を読み込み、filenameを抽出するのに使用します。 –

+0

Okスクリプトに引数を使用する代わりに、入力を促すように修正しました – amdn

+0

エラー:[[:: "done"行に見つかりませんでした –

関連する問題