2016-04-19 7 views
-1

私は、外部と内部のラップトップキーボードのキーボードタイプを設定するためのbashスクリプトを用意しています(両方とも使用可能で正しい文字を出力します)。cliオプションのbashスクリプトがコマンドを返さない

スクリプトの主要部分は正常に動作しますが、コマンドラインオプションをキャプチャするためのスイッチ/ケースに問題があります。私は私が欠けているかわからないんだけど、私は確信している私は、次の

:~$ bash -x 2Keyb.sh -h 
+ '[-h' = ']' 
2Keyb.sh: line 31: [-h: command not found 
+ '[' -h '!=' ' ]' 
2Keyb.sh: line 37: [: missing `]' 

を取得し、私のホームディレクトリからこれを呼び出すと

これは

#!/bin/bash 


###functions first 

usage() 
{ 
echo "script to set the internal and external keyboards to french and english repectively" 

} 


setKeyBoardMap() 
{ 
    echo "setting dual keyboard." 
    echo "setting keyboard types..." 
    setxkbmap -device 13 fr 
    setxkbmap -device 10 gb 

    echo "done" 
} 


##the main show 

#capture command line parameters 


if ["$1" = ""]; then 
    #no command line parameters 
    setKeyBoardMap 
    exit 0 
else 

while [ "$1" != " "]; do 
    case $1 in 
     -h | --help) usage 
       exit 1 
       ;; 
    -*|--*) 
    echo "Unknown option $1" 
    echo "please use -h or --help for usage details" 
    exit 1 
    ;; 

    #add any switches in here 
    #you may decide to modify this to set the keyboard 
    #according to your prefered type. 


    esac 

done 

fi 

いっぱいスクリプトです私のwhileステートメントの中にあります。

私は、コマンドライン引数のために、この構造を持つことが少し過剰であるが、私は、私はそれが動作を取得する必要がある任意の2

しかし、最初の間keybaord言語を設定するには、任意のラップトップでこれを使用可能にすることを計画していることを知っていますそれで。

私はスクリプト機能が完全に...事前に

おかげで、あなたの助けが高く評価されている任意の引数を渡さない場合。

Codegnomeで述べたようにダビデは

+1

'[" $ 1 "=" "]'は構文的に無効です。似たような問題があります。 SOに投稿する前に、shellcheck.netを使ってデバッグしてください。 –

+1

これは奇妙なことに、["$ 1"!= ""];これはhttp://linuxcommand.org/wss0130.php#detectingのページからです。スペーシングの問題に沿った手がかりを私は答えとして受け入れるだろう。しかしshellcheck.netのおかげで私はそのサイトを知らなかった。 – DaveM

+0

独自の構文を作り出すことはできません。必要なスペースを無視しています。がんばろう! –

答えて

0

while [ "$1" != " "]; do ^^ space missing here またshellcheck、シェルスクリプトのための静的アナライザがあります。私は個人的にvimとシンセティックプラグインとの組み合わせでshellcheckバイナリを使用します - >この種のエラーを見つけるには非常に便利です。

+0

正直言って私はCodeGnomeが解決策。私はあなたに正しい答えの確認を与えるだろうが、それはshellcheck.netへのリンクを持っているので、私はまだCodeGnomeの答えを支持するだろう、そしてそれは自分自身を助けてくれた...同じものを追加すれば、彼のupvoteをつかむことができる;) – DaveM

+0

shellcheck.netへのリンク。今私はあなたの答えを受け入れることができます。 – DaveM

+0

ありがとうございます。しかし、あなたの追加の前にもう2度編集して編集を拒否しました。 – jandob

関連する問題