効率的な方法で配列のファイル拡張子をトリミングします。

効率的な方法で配列のファイル拡張子をトリミングします。

モジュールフォルダに拡張子のないファイルを表示し、配列に追加します。

function toolbox {
  array=(`ls "$1" | xargs`)
  len=${#array[array{@]}
  for (( i=0; i<$len; i++ ))
  do
    echo "`basename ${array[$1]} .ssh`"
  done
}

これにより望ましい結果が得られますが、forループを使用する必要があります。

toolbox "module"

ベストアンサー1

${var#word}拡張は配列${var%word}でも機能します。

arr=(/dir/dir1/foo.ssh /dir/dir2/bar.ssh )
arr2=("${arr[@]##*/}") 
arr2=("${arr2[@]%.ssh}") 
printf "%s\n" "${arr2[@]}"

印刷fooしてくださいbar

このコマンド置換は、空白(何もない場合でも)または引用符()を含むファイル名をls | xargs破棄します。xargsxargs

実際、次のように変数からグローバル変数を拡張できます。いいえ引用してみてください。このように:

array=( $1 )

IFSまだ重要ですが、最初に空の文字列に設定しないと、空白のあるパターンが壊れます。)

ただし、名前が終わるファイルのみを探している場合は、次のスクリプトに.sshディレクトリを引数として渡し、globを渡すことができます。*.ssh

array=( "$1"/*.ssh )

おすすめ記事