すべての jboss バージョンを一覧表示するスクリプトを作成しています。しかし、私は問題に巻き込まれました。
Jboss は通常、バージョンの名前が異なります。
jboss-4.0.0.tar.gz
jboss-4.0.4.GA.tar.gz
バージョンを取得できました (たとえば、4.0.0 または 4.0.4)。しかし、私はすべてのバージョン 4.0.4.GA を取得する必要があります
ls -1 | grep jboss |sed -r 's/^.*-([0-9.]+)\..*/\1/'
ありがとう
質問する
878 次
2 に答える
3
ls
出力を解析しません。
ls
ファイル情報をインタラクティブに見るためのツールです。その出力は人間用にフォーマットされており、スクリプトでバグを引き起こします。代わりにglobs
(ここで行うように) or を使用しfind
ます。理由を理解してください: http://mywiki.wooledge.org/ParsingLs
$ ls -1
jboss-4.0.0.tar.gz
jboss-4.0.4.GA.tar.gz
foobar
grep の使用:
$ printf -- '%s\n' * | grep -oP 'jboss-\K.*(?=\.tar\.gz)'
またはawkを使用:
$ printf -- '%s\n' * | awk -F'jboss-|.tar.gz' '/jboss/{print $2}'
またはperlを使用して:
printf -- '%s\n' * | perl -lne '/jboss-(.*?)\.tar\.gz/ && print $1'
出力
4.0.0
4.0.4.GA
于 2013-04-20T12:36:38.520 に答える
0
$ cat test.sh
#!/bin/bash
for file in jboss-*.tar.gz; do
[ -f "${file}" ] || continue
version="${file#*-}"
version="${version%.tar.gz}"
echo "${version}"
done
例:
$ find
.
./test.sh
./jboss-4.0.0.tar.gz
./jboss-4.0.4.GA.tar.gz
$ ./test.sh
4.0.0
4.0.4.GA
于 2013-04-20T12:35:54.780 に答える