Я пытаюсь создать собственную командную строку. Например, если я наберу
. filename.sh 1 hello 2 hi 3 a 0 b
, пользовательское приглашение должно выглядеть следующим образом:
[b][hello][hi][a]$
Число 1 означает вторую позицию, а цифра 2 - третью позицию et c. Но когда я запускаю его, почему-то отображается только первая часть, например:
[][hello][][]$
И я не могу его перезаписать. Например, когда я набираю
. filename.sh 2 hi
, это должно быть [][hello][hi][]$
, но вместо этого оно становится [][][hi][]$
. Как решить?
#!/bin/bash
#$1 [$2] $3 [$4] $5 [$6] $7 [$8]
PS1="[][][][]$"
for i in "$*"
do
#$1
if [ $1 -eq 0 ]
then
PS1="[$2][][][]$"
elif [ $1 -eq 1 ]
then
PS1="[][$2][][]$"
elif [ $1 -eq 2 ]
then
PS1="[][][$2][]$"
elif [ $1 -eq 3 ]
then
PS1="[][][][$2]$"
#$3
elif [ $3 -eq 0 ]
then
PS1="[$4][][][]$"
elif [ $3 -eq 1 ]
then
PS1="[][$4][][]$"
elif [ $3 -eq 2 ]
then
PS1="[][][$4][]$"
elif [ $3 -eq 3 ]
then
PS1="[][][][$4]$"
#5
elif [ $5 -eq 0 ]
then
PS1="[$6][][][]$"
elif [ $5 -eq 1 ]
then
PS1="[][$6][][]$"
elif [ $5 -eq 2 ]
then
PS1="[][][$6][]$"
elif [ $5 -eq 3 ]
then
PS1="[][][][$6]$"
#7
elif [ $7 -eq 0 ]
then
PS1="[$8][][][]$"
elif [ $7 -eq 1 ]
then
PS1="[][$8][][]$"
elif [ $7 -eq 2 ]
then
PS1="[][][$8][]$"
elif [ $7 -eq 3 ]
then
PS1="[][][][$8]$"
fi
done