В моем Linux-окне echo $SHELL
приводит к /bin/csh
. Поэтому я предполагаю, что моей оболочкой по умолчанию является c-shell. Я пытаюсь понять поведение сценария оболочки.
сценарий 1 - сценарий содержит -
echo $1 $2 $3
echo $*
echo $argv[1] $argv[2]
$argv[3]
echo $argv[*]
echo $#argv
выход -
arg1 arg2 arg3
arg1 arg2 arg3 arg4
[1] [2]
./test.sh: line 4: [3]: command not found
[*]
4argv
- Очевидно, что c-shell не может выполнить последние 4 строки в скрипте, которые должны быть выполнены csh.
Однако - когда я добавлю строку Шебанга #!/bin/csh
в верхней части скрипта, он выводит все выходные данные правильно.
Вопрос - Почему csh неправильно выполняет последние 4 строки в первом сценарии и почему я должен явно включить строку shebang?