Linux kutumda echo $SHELL
sonuçlanır /bin/csh
. Bu yüzden varsayılan kabuğumun c-shell olduğunu varsayıyorum. Bir kabuk betiğinin davranışını anlamaya çalışıyorum.
senaryo 1 - betiği içerir -
echo $1 $2 $3
echo $*
echo $argv[1] $argv[2]
$argv[3]
echo $argv[*]
echo $#argv
çıktı -
arg1 arg2 arg3
arg1 arg2 arg3 arg4
[1] [2]
./test.sh: line 4: [3]: command not found
[*]
4argv
- Bu nedenle açıkça c-shell, csh tarafından çalıştırılması gereken koddaki son 4 satırı çalıştıramaz.
Ancak - #!/bin/csh
betiğin en üstüne shebang satırı eklediğimde, tüm çıktıları doğru yazdırıyor.
Soru - csh neden ilk senaryoda son 4 satırı doğru şekilde uygulamıyor ve neden açıkça shebang hattını eklemek zorundayım?