Когда я запускаю следующую команду
./command *
, используя этот скрипт
#!/bin/bash
for f in ./$1
do
echo $f
done
, отражается только первый файл, указанный в $ 1. Мой вопрос: почему?
Когда вы запускаете команду, оболочка расширяет *. Таким образом, запуск сценария эквивалентен
./command file1.txt file2.txt file3.txt
$1 соответствует первому аргументу, поэтому цикл имеет только одну итерацию.
$1 относится только к первому аргументу. Вы должны использовать $*.
#!/bin/bash
for f in $*
do
echo $f
done