Cygwin, вместе с эмуляцией командной строки Unix, оболочка в этом отношении, не является 100%-м эквивалентом никакой оболочки UNIX. Следовательно, другая функциональность некоторых приложений от их дубликатов UNIX и некоторых полностью не рабочие команды UNIX, должен ожидаться. Это никогда не предназначалось, чтобы быть платформой обучения UNIX насколько я знаю.
Если Вы серьезно относитесь к изучению Unix, предполагая, что у Вас есть полудостойная и недавно созданная машина с вполне достаточной памятью, также предполагая, что Вы не хотите бросать свой комфорт окон путем начальной загрузки во вторичный раздел Linux, я предложил бы использовать виртуальное поле Oracle, чтобы создать виртуальный раздел под окнами и выполнить реальную операционную систему Unix на нем, не как эмулятор оболочки Unix. Вы найдете все свои команды там, и их ожидаемое поведение совпадет с Вами, выполняют его на реальной машине, кроме команд те тестовые аппаратные средства, конечно.
Если Вы смущены, просто гуглите термин "VirtualBox для новичков". Вы найдете несметное число чтения материала.
Удачи
Использование той же структуры, что и ваш исходный скрипт, вам просто нужно итерации Над массивом $ @
(это список аргументов, приведенных в командной строке):
#!/usr/local/bin/bash
set -e
if [ "$#" -lt 1 ]
then
echo "Please insert at least one argument"
exit
else
echo -e "\c"
fi
for file in "$@"
do
if [ -h "$file" ]
then
echo "$file is a symbolic link"
else
echo "$file is not a symbolic link"
fi
done
Упрощенная версия то же самое:
#!/usr/bin/env bash
[ "$#" -lt 1 ] && printf "Please give at least one argument\n" && exit
for file
do
[ -h "$file" ] && printf "%s is a symbolic link\n" "$file" ||
printf "%s is not a symbolic link\n" "$file"
done
Никто не упомянул сдвиг?
if [ x = "x$1" ] ; then
echo need at least one file
exit 1
fi
while [ x != "x$1" ] ; do
if [ -h "$1" ]; then
echo "$1 is a symbolic link"
else
echo "$1 is not a symbolic link"
fi
shift
done
Еще один сдвиг
:
: "${1?USAGE: "$0" files...}"
while [ "$#" -gt 0 ]
do [ -h "$1" ]
printf "'%s' is %.$((!$?*4))s%s\n" \
"$1" "not " "a symbolic link."
shift; done
То, как я прочитал это, было как заставить мой личный скрипт принимать несколько аргументов, как, например, wget может выполнить «wget url1 url2 url3»
вставьте весь свой сценарий в следующее место, где написано «строки из моего сценария», и сохраните этот файл как новый сценарий.:
ARGUMENTS=$(echo "$@"| tr " " "\n") ; while read A; do "lines from my script";done < "$ARGUMENTS"
Аргументы скрипта хранятся в переменной $@. Этот небольшой сценарий охватывает ваш сценарий и запускает его несколько раз, каждый раз передавая ему следующий аргумент. Если ваш текущий скрипт ссылается на $1, вам придется изменить его на $A.