2014-02-18 5 views
0

Простой скрипт ниже не работает, когда, а не передавая одно имя файла, я хочу передать несколько файлов с помощью символов расширения как *Передача нескольких аргументов в Баш скрипт

#!/bin/bash 
fgrep -c '$$$$' $1 

Если я даю команду script.sh file.in скрипт работает. Если я даю команду script.sh *.in, это не так.

+0

'$ 1' не установлен на' * .in'; он установлен в первый элемент, который '* .in' расширяет. – chepner

+0

@chepner, который * может * быть '* .in', если соответствующих файлов не существует. ;) – kojiro

ответ

5

Используйте "[email protected]", чтобы передать несколько файлов в fgrep. $1 передает только первое имя файла.

fgrep -c '$$$$' "[email protected]" 
+0

это прекрасно работает - спасибо – mimenico

+0

@mimenico Обратите внимание, что '$ 1' является подмножеством' $ @ ', ссылаясь на * точно * на первый аргумент; Кроме того, цитирование (обычно) лучше, чем не цитирование: поэтому '$ @' лучше, чем '$ *'. – jpaugh

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