2016-04-25 87 views
1

我們開始使用shellcheck來檢查我們的腳本錯誤/警告,引述未加引號的變量在shell腳本

目前常見的警告,我們在我們的所有腳本看到的是不帶引號的變量。
是否有任何腳本來糾正這些簡單的警告/錯誤?
我有低於該予用於更改$VAR${VAR}

sed -i -r 's:\$([_a-zA-Z?][_a-zA-Z0-9]*):${\1}:g' <scriptname>

我修改它如下命令,
sed -i -r 's:\$([_a-zA-Z?][_a-zA-Z0-9]*):"${\1}":g' <scriptname>

上述命令工作正常時的變量是未引用的,但是當它們被例如引"$VAR"它更改爲""${VAR}""

任何建議是否繼續使用sed或更好地編寫腳本來做到這一點?

有什麼特別的建議嗎?

+0

檢查是否有報價。 ''s /「* yadda」* /「yadda」/'' – 123

+2

引用變量是一個基本的,有用的事情要記住。如果你忘了它,只是依靠一個小腳本來完成它,你正在接近一個風險:腳本失敗的風險,你認爲其他事情可能是錯誤的,忘記引用變量的原則並沒有考慮到的風險。這就像製作一個腳本來固定你的腰帶一樣:我認爲最好記住在坐下飛機時做這件事。 – fedorqui

+0

@fedorqui問題是我們開始工作的時候,我們都是新的,在這期間我們已經有所改進,但是現在我們有許多腳本需要修改,我們會審查它們,但是改變每一行都是無聊的,所以想到使用腳本來做到這一點。 – AnkurTank

回答

2

仔細編輯。
當你寫echo "This is example ${var} in the middle of the line"你不想把報價放在${var}左右。
您應該將所有變量(PATH,PWD和其他系統變量除外)置於小寫。 您可能想要在.vimrc中添加一些映射,它將使用F5的F4(如. ! ~/bin/make_my_var)執行您的sed第一個或第二個命令行,從而使編輯更加容易。在make_my_var中,您可以添加用於降低變量的邏輯,當它們不是一個例外列表時。 和(編輯): 你可能想要更多的標準,也許使用styleguide