[LINUX] Notes de syntaxe de base pour le script shell

table des matières

--Variations, variables spéciales --Array --Calcul numérique

Variables, variables spéciales

variable

read -p "Pick 3 colors: " c1 c2 c3
echo $c1
echo $c2
echo $c3

Variables spéciales

echo $0
echo $1
echo $2
echo $#
echo $@
./test a b c
./test
a
b
3
a b c

Tableau

colors=(blue red green)
echo "${colors[@]}"
echo "${colors[0]}"

colors+=(pink white) #Ajout de tableau
echo "${colors[@]}"
blue red green
blue
blue red green pink white

Calcul numérique

# + - * / % ** ++ --
n=1
((n++)) #n=2
((n=n+5)) #n=7
echo $n
((n=n/7)) #n=1
echo $n

if

read -p "name :" name

if [[ $name == "mhori" ]]; then
    echo "welcome"
elif [[ $name =~ ^m ]]; then #Au départ de m
    echo "Are you mhori?"
else
    echo "you are not allowed"
fi

S'il y a des fichiers ou des répertoires

read -p "searching name:" name
if [[ -f $name ]]; then
	echo "file $name exists"
elif [[ -d $name ]]; then
	echo "directory $name exits"
fi

Comparaison de chaînes

# = == != -z(La longueur de la chaîne de caractères est de 0) =~(Expressions régulières)

read -p "string: " str

if [[ -z $str ]]; then
    echo "string is empty"
elif [[ $str =~ ^m ]]; then
    echo "string starts with m"
else 
    echo $string
fi

for, while

for

colors=(blue red pink)
for color in ${colors[@]}; do
    echo "I love $color"
done
I love blue
I love red
I love pink

while

i=0
while ((i < 10)); do
    ((i++))
    if ((i == 3)); then
        continue
    elif ((i == 6)); then
        break
    fi
    echo $i
done
1
2
4
5

continuez à lire dans une boucle infinie

while :
do
    read -p "command : " cmd
    if  [[ $cmd == "quit" ]]; then
        break
    else
        echo $cmd
    fi
done
command : p
p
command : m
m
command : qiot
qiot
command : quit

Lire à partir d'un fichier

Lire ligne par ligne et sortie

## 1 ##
while read line; do
    echo $line
done < colors.txt

## 2 ##
cat colors.txt | while read line
do
	echo $line
done

case & select

case

read -p "Signal color : " color
case "$color" in
	red)
		echo "stop"
		;;
	blue|green)
		echo "go"
		;;
	*)
		echo "wrong signal"
esac

select

select color in red blue green yellow ; do
	case "$color" in
		red)
			echo "stop"
			;;
		blue|green)
			echo "go"
			;;
		yellow)
			echo "caution"
			;;
		*)
			echo "wrong signal"
			break
	esac
done
1) red
2) blue
3) green
4) yellow
#? 1
stop
#? 2
go
#? 3
go
#? 4
caution
#? 0
wrong signal

une fonction

Vérification de l'état de fin

Sous Unix, il est utile de savoir que 0 est une terminaison normale et 1 est une terminaison anormale, et vous pouvez vérifier avec $?.


hello() {
	if [[ $1 == "mhori" ]]; then
		echo "hello $1"
		return 0
	else
		echo "goodbye $1"
		return 1
	fi
}

hello mhori; echo $?  #hello mhori  0
hello mmm; echo $?   #goodbye mmm  1

Recommended Posts

Notes de syntaxe de base pour le script shell
Principes de base du script Shell # 2
Notes de base de Theano
Script shell pour la mise à jour par lots des packages pip3
Notes C # faciles à comprendre pour pythoniste (uniquement les notes de base)
FX_tool pour Hython Basic02
Remplacer la commande dans le script shell
Script Shell @ mémo d'étude
FX_tool pour Hython Basic01
Notes d'installation pour TensorFlow pour Windows
Mémo Python Tkinter (pour moi)
Essayons un script shell
Grammaire de base Python pour les débutants
Commandes de base pour les opérations sur les fichiers
Notes pour le concours de programmation HHKB 2020
Conseils et précautions lors de l'analyse des données
Atom: Remarque pour l'erreur d'indentation lors de la copie du script Python dans le shell
Script shell pour ceux qui ont des problèmes avec mkdir + touch __init__.py