私は、外部と内部のラップトップキーボードのキーボードタイプを設定するための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 "=" "]'は構文的に無効です。似たような問題があります。 SOに投稿する前に、shellcheck.netを使ってデバッグしてください。 –
これは奇妙なことに、["$ 1"!= ""];これはhttp://linuxcommand.org/wss0130.php#detectingのページからです。スペーシングの問題に沿った手がかりを私は答えとして受け入れるだろう。しかしshellcheck.netのおかげで私はそのサイトを知らなかった。 – DaveM
独自の構文を作り出すことはできません。必要なスペースを無視しています。がんばろう! –