web-dev-qa-db-ja.com

Bashで2つの文字列を比較しているときに「コマンドが見つかりません」というエラーが表示される

私のスクリプト全体は現在これです:

#!/bin/sh   
clear;   
blanko="";   
# Dummy-Variablen
variable=Testvariable;   
if [[$variable == $blanko]];
then   
  echo "Nichts da!"   
else   
  echo $variable   
fi

そして私が入ったら

TestSelect.sh

私は得る

/usr/bin/TestSelect.sh: line 6: [[Testvariable: command not found   
Testvariable

どうすれば修正できますか?

50
EpsilonAlpha

これは問題です。

if [[$variable == $blanko]];

角括弧内にスペースが必要です。次のように使用します。

[[ "$variable" == "$blanko" ]] && echo "Nichts da!" || echo "$variable"
97
anubhava

関連するメモでは、[ ]の周りにもスペースが必要です。

if [ "$variable" = "$blanko" ]; then
  # more code here
fi

Wordの分割とグロビングを防ぐために、変数は[ ]内で二重引用符で囲む必要があることに注意してください。二重引用符は、比較される変数のいずれかが設定されていない場合にも役立ちます。そうでない場合、シェルは構文エラーをスローします。

次の投稿を見て、[ ]の周りにスペースが必要な理由を理解してください。

スペースを必要とする他の構文要素について語る別の関連記事:

最後に、この投稿では[[ ]][ ]の違いについて説明しています。


関連する:

8
codeforester

#!/bin/bashのようなbashスクリプトを使用している場合は、if [[ $partition == "/dev/sda2" ]]; thenを使用して文字列を比較し、./scriptname.shまたはbash scriptname.shでスクリプトを実行します。

0
ankit