Ошибки в первом файле Bash - PullRequest
0 голосов
/ 08 февраля 2019

Я пишу свой первый bash-скрипт и продолжаю получать сообщения об ошибках, и я не совсем уверен, где я ошибаюсь.Ниже приведен скрипт, который я пытаюсь выполнить:

#!/bin/ksh
#Script Name: printnum.sh
# Verify the number of arguments and exit if not equal to 1`enter code here`
$mynum = "5"
echo $mynum
if [$mynum -gt 1]
then
    printf "error: program must be executed with 1 argument\n"
    printf "usage: $0 value (where value >= 1)\n"
    exit 1
fi
# Verify argument is a positive number
if [$mynum -lt 1]
then
    printf "error: argument must be a positive number\n"
    printf "usage: $0 value (where value >= 1)\n"
fi
# Store command line argument in variable i
$mynum="$i"
# Loop and print $i while decrementing variable to =1 (with comma)
while [$i -gt 1]
do
    printf "$i, "
done

, а ниже - ошибки, которые я получаю:

./printnum.sh[3]: =: not found [No such file or directory]

./printnum.sh[5]: [: ']' missing
./printnum.sh[11]: [: ']' missing
./printnum.sh[16]: =: not found [No such file or directory]`enter code here`
./printnum.sh[17]: [: ']' missing
/export/home/hanko01/HOME/itec400/homework>

Любая помощь здесь будет принята с благодарностью!

1 Ответ

0 голосов
/ 08 февраля 2019

Сначала несколько вещей:

  1. shebang должен быть #! / Bin / bash, если вы пытаетесь использовать скрипт bash.(Не требуется, если уже используется bash, проверьте, напечатав $ SHELL в терминале)
  2. , если (а также в то время) условие должно быть правильно разнесено.Например,if / space / [/ space / condition / space /]
  3. Как сказано в комментариях, не используйте $ при назначении значений.
  4. $ # для количества аргументов командной строки.

Остальное вы можете понять из исправленного кода:

#!/bin/bash
#Script Name: printnum.sh
# Verify the number of arguments and exit if not equal to 1 `enter code here`
if [ $# -ne 1 ]
then
        printf "error: program must be executed with 1 argument\n"
        printf "usage: $0 value (where value >= 1)\n"
        exit 1
fi
# Verify argument is a positive number
if [ $1 -lt 1 ]
then
        printf "error: argument must be a positive number\n"
        printf "usage: $0 value (where value >= 1)\n"
fi
# Store command line argument in variable i
i=$1
# Loop and print $i while decrementing variable to =1 (with comma)
while [ $i -gt 1 ]
do
        printf "$i, "
        i=$((i-1))
done
...