2013-08-21 3 views
1

У меня есть программа, которая будет принимать пользовательскую строку ввода и создавать выходные файлы соответственно, например «./bashexample2 J40087», это создаст выходные файлы для всех файлов в папке которые содержат строку J40087. Одна из проблем заключается в том, что если пользователь ничего не вводит во входной строке, он будет генерировать выходные файлы для каждого файла внутри содержащейся папки. Есть ли способ запретить пользователю вводить ничего во входную строку? Или, возможно, выплюнуть какое-то предупреждение: «Пожалуйста, введите входную строку».Как запретить пользователю вводить ничего в bash-скрипт

#Please follow the following example as input: xl-irv-05{kmoslehp}312: ./bashexample2 J40087 

#!/bin/bash 

directory=$(cd `dirname .` && pwd) ##declaring current path 
tag=$1 ##declaring argument which is the user input string 

echo find: $tag on $directory ##output input string in current directory. 

find $directory . -maxdepth 0 -type f -exec grep -sl "$tag" {} \; ##this finds the string the user requested 
for files in "$directory"/*"$tag"* ##for all the files with input string name... 
do 
    if [[ $files == *.std ]]; then ##if files have .std extensions convert them to .sum files... 
      /projects/OPSLIB/BCMTOOLS/sumfmt_linux < "$files" > "${files}.sum" 
    fi 

    if [[ $files == *.txt ]]; then ## if files have .txt extensions grep all fails and convert them.. 
     egrep "device|Device|\(F\)" "$files" > "${files}.fail" 
     fi 
     echo $files ##print all files that we found 
done 
+0

Возможный дубликат [bash shell script check input argument] (http://stackoverflow.com/questions/6482377/bash-shell-script-check-input-argument) – superEb

ответ

3

Я хотел бы сделать что-то вроде этого:

tag=$1 

if [ -z "$tag" ]; then 
    echo "Please supply a string" 
    exit 1 
fi 
+0

привет, можете ли вы рассказать мне, что такое -z команда делает пожалуйста? – kkmoslehpour

+0

Возвращает true, если длина строки равна нулю –

0

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

Например

if [ $# -gt 0 ]; then 
    ... your logic here ... 

Как примечание друг от друга, вы можете прочитать первый параметр, передаваемый в скрипт, используя $ 1 и $ 2 для второго, и так далее.

Надеюсь, что это поможет.

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