ファイルが存在するかどうかを確認しようとしています。これは`[-e file.txt]`がbashで動作しない場合
if [-e file.txt]; then
echo "file exists"
else
echo "file doesn't exist"
fi
私のコードですが、私はそれを実行したときに私が取得:
./test.sh: line 3: [-e: command not found
は私が間違って何をしているのですか?
ファイルが存在するかどうかを確認しようとしています。これは`[-e file.txt]`がbashで動作しない場合
if [-e file.txt]; then
echo "file exists"
else
echo "file doesn't exist"
fi
私のコードですが、私はそれを実行したときに私が取得:
./test.sh: line 3: [-e: command not found
は私が間違って何をしているのですか?
[
はBashでは特別なトークンではありません。 という単語[
は組み込みのコマンドです(ちょうどecho
のようなものです)。だから、後にスペースが必要です。そして、同様に、あなたは]
の前にスペースが必要になります(それはまだスペースが必要ですが)
if [ -e file.txt ] ; then
言った、私は—代わり[[ ]]
をお勧めします、それはいくつかの方法で安全です:
if [[ -e file.txt ]] ; then
if [ -e file.txt ]; then
スペースが必要です。 [および]は通常のプログラムです。
は知識をひけらかすされるように、 ']'プログラムではありません、それはのために必要な最後の引数で '['コマンド –
「グレン・ジャックマン」@:もちろん。ごめんなさい。 – jacekmigacz
'['と ']'は 'on-their-own'である必要があります。つまり、スペースで囲まれている必要があります。
if [ -e file.txt ] *emphasized text*; then
echo "file exists"
else
echo "file doesn't exist"
fi
Woops、私は[
と-e
の間にスペースが必要だとわかった。このように:
if [ -e file.txt ]; then
echo "file exists"
else
echo "file doesn't exist"
fi
+1。ちょうど '[['はbashの機能ですので、 '/ bin/sh'でスクリプトを呼び出すことはできません。 –
あなたの答えを編集して二重大括弧が安全である理由を説明できますか? – Relequestual