2017-10-18 4 views
0

は、ファイルの内容を「code.sh」です:私はvimの中で「code.sh」を開くとBashの部分文字列置換を実行し、vimは構文エラーを表示し続けます。ここ

#!/bin/bash 

x=Funtime/CandyBeer20171018.txt 

a=${x:(-12):8} #start 12 characters from the end of string and select 8 characters 
echo $a 

、3行目は、「赤されているテキストの部分、赤で構文エラーを返します。 :( - 12):8 "。私はXubuntu 14.04でvimを使っています。

言い換えれば、コードは必要に応じて動作します。スクリプトを実行すると、文字列 "20171018"のみが返されます。

  1. 私の構文が間違っているか、これは偽のフラグですか?

  2. 構文が間違っている場合は、誰かが解決したり、私に別の解決方法を教えてもらえますか?文字列の最後を基準点として切り捨てることが重要であることを覚えておいてください。

ここで私の髪を切り取っています。助けてください。私は何時間もカット、ヘッド、テールを演奏してきましたが、これは負のインデックスを使用して解決策に到達することができる最も近い方法です。

+0

新しいシェルを使用してサポートしている場合は、構文は問題ありません。 –

+0

ところで、次に構文の健全性チェックが必要なときは、[ShellCheck](http://www.shellcheck.net/)の使用を検討してください。 –

+0

これはvimでよくあることですか?私がvimで偽の旗を手に入れたのはこれが初めてのことです。私はこれを少し不安に思っています –

答えて

0

チャールズ・ダフィー(Charles Duffy)が私に知らせてくれたので、vimは構文エラーの評価に関しては最終的な権限ではありません。 vim フラグが良いコードには構文エラーがあります(これは素晴らしいことですが、私はvimが構文エラーを正しく検出するために信頼できると思っていました)。

チャールズ・ダフィーは、bash/shスクリプトの健全性チェックを実行するshellcheckという素晴らしいプログラムを私にも知らせました。だから私は単にで(Xubuntuの14.04上)shellcheckをインストール

sudo apt-get install shellcheck 

は、その後、私は私のスクリプト上の健全性チェックを行うには、次のコードを実行しました:

shellcheck code.sh 

それが出力を返されません( Charles Duffy氏のように、vimは常に良い構文の助言を与えることができないということを示しています。

私のスクリプトの一部でシェルチェックを実行しましたが、それは単に素晴らしいです!私のスクリプトを改善するためのすばらしい提案をたくさん見せてくれました。そして、私のよりトリッキーなスクリプトの1つでは指摘できなかったエラーをデバッグするのに役立ちました。私はbashスクリプトを使って作業する人々に十分なシェルチェックを勧められません!

チャールズ・ダフィーに感謝します!

+0

'vim-syntastic'をインストールすると、vimでシェルチェックの提案を直接得ることができます –

関連する問題