2013-05-03 5 views
0

Я очень новичок в этом. Я просто пытаюсь проверить наличие данного файла и коснуться его, если он не существует. Командная строка отвечает, что у меня слишком мало аргументов. Очевидно, я что-то пропустил. Спасибо, что посмотрели.«Слишком мало аргументов» в сценарии Bourne Shell

#!/bin/sh 
echo Enter File Name 
read filename 
if [ -s $filename ] 
then 
echo The File Exists! 
else 
echo File did not previously exist 
touch $filename 
fi 
+1

есть '}' вместо '' 'в 4-й строке – Jacopofar

+0

Это была моя ошибка, набрав его, однако проблема не устранена. Спасибо, что указали это, но это не меняет проблемы для меня. = ( –

+0

Это работает jus fine, поскольку это написано, я просто не вызывал его правильно. * Facepalm * –

ответ

3

У вас есть две ошибки, является то, что вы написали } вместо ], другой является то, что вы должны добавить пробел перед закрытием ]

#!/bin/sh 
echo Enter File Name 
read filename 
if [ -f "$filename" ]; then 
    echo The File Exists! 
else 
    echo File does not exist 
    touch "$filename" 
fi 

Как предложил michaelb958 вы должны также цитаты $filename, потому что это создало бы проблемы для имен файлов с пробелами внутри like this.html

Вы сказали, что новичок в этом, тогда я бы предложил использовать редактирование или с хорошим подсветкой синтаксиса, что помогло бы вам определить проблему.

+1

Замечание к '[': Параметры запроса, как в '' $ filename "'. Невозможность сделать это с именами, содержащими пробелы, может вызвать интересное поведение. – michaelb958

+0

Правильно, я добавляю, что –

+0

@RossCournoyer Какую команду выдает это сообщение? – michaelb958

Смежные вопросы