Você está recebendo o erro porque não há espaço entre [
e !
, mas também há algumas falhas em seu código. Primeiro você está verificando se o arquivo não existe, e se não estiver fazendo nada. Se o arquivo existir você está fazendo um diretório (mas não fazendo nada para criar o arquivo).
Você também não precisa da operação nula, você deve ser capaz de simplesmente fazer:
#! /bin/bash -
if [[ ! -e /Scripts/file.txt ]]; then
mkdir -p /Scripts
touch /Scripts/file.txt
fi
[command2]
Isso está verificando se /Scripts/file.txt
não existe, ele criará o diretório /Scripts
e, em seguida, o arquivo file.txt
. Você também pode verificar a existência do diretório separadamente, se quiser. Além disso, aviso estou usando -e
em vez de -f
como você pediu simplesmente para verificar a existência de um arquivo que é o que -e
vai fazer onde -f
verifica que é um "arquivo regular" link