2017-11-26 2 views
0

ハイフンがなくなっても、このコードは停止していないようです...私は間違っていますか?正規表現を使用してbashスクリプトの条件付きハイフンをテストする方法

hortense$ if [[ $BFILE =~ ^[-]* ]] ; then BFILE=${BFILE:1} ; fi 

hortense$ echo $BFILE 

Atbari 

hortense$ if [[ $BFILE =~ ^[-]* ]] ; then BFILE=${BFILE:1} ; fi 

hortense$ echo $BFILE 

tbari 
+1

を 'Atbari'は0以上の' - '文字で始まります。 – melpomene

+4

もっと慣用的です: '[[$ bfile = - *]]; if [次にbfile = $ {bfile#?}; fi':正規表現は必要ありません。最初の文字だけを取り除くために部分文字列のパラメータを拡張する必要はなく、小文字の変数名を使いたいとします。悲しいことに、ここにいる多くの人があなたに良い習慣を見せてくれることはありません。彼らはただ評判を得るために素早く汚い答えをあなたに与えるだけです。 –

+0

この質問に回答しました!あなたがた両方に感謝します。私は、大文字の変数名の重要性を学ぶ作業をします。 – Hortense111

答えて

1

パターン^[-]*は0以上-始まる意味します。 -がまったくなくても一致します。

*から+に変更すると、少なくとも1つの-が必要です。

[-]の代わりに、単に-と書くこともできます。あなたは完全に正規表現をスキップすることができもちろん

if [[ $BFILE =~ ^-+ ]] ; then BFILE=${BFILE:1} ; fi 
0

を::

すべて一緒にそれを置く

if [[ ${BFILE:0:1} == - ]] ... 
関連する問題