Есть скрипт mkwelcome.sh
:
#!/bin/bash
WelcomeFile=./welcome.sh
cat <<-"EOWelcome" >$WelcomeFile
#!/bin/bash
echo Welcome
count=0
old=$count
((count++))
sed "s/^count=$old/count=$count/" -i $0
((count>4))&&rm $0
EOWelcome
chmod +x $WelcomeFile
Замечание :Осторожно, используйте табулирование и отсутствие пробелов в начале строк!
Двойные кавычки гарантируют, что переменные не будут интерпретированы bash .
Тогда можно попробовать:
./mkwelcome.sh
./welcome.sh
Welcome
./welcome.sh
Welcome
./welcome.sh
Welcome
./welcome.sh
Welcome
./welcome.sh
Welcome
./welcome.sh
bash:./welcome.sh: No such file or directory
Затем добавьте в свой.bashrc
:
[ -f /path/welcome.sh ] && /path/welcome.sh
sed 's/^ \+/\t/' >mkwelcome.sh
#!/bin/bash
WelcomeFile=./welcome.sh
cat <<-"EOWelcome" >$WelcomeFile
#!/bin/bash
conWord=(first second third fourth fifth)
count=0
echo Welcome to your ${conWord[count]} login!
old=$count
((count++))
sed "s/^count=$old/count=$count/" -i $0
((count>4))&&rm $0
EOWelcome
chmod +x $WelcomeFile
Ctrl + д
./mkwelcome.sh
[ -x./welcome.sh ] &&./welcome.sh
Welcome to your first login!
[ -x./welcome.sh ] &&./welcome.sh
Welcome to your second login!
[ -x./welcome.sh ] &&./welcome.sh
Welcome to your third login!
[ -x./welcome.sh ] &&./welcome.sh
Welcome to your fourth login!
[ -x./welcome.sh ] &&./welcome.sh
Welcome to your fifth login!
[ -x./welcome.sh ] &&./welcome.sh
[ -x./welcome.sh ] &&./welcome.sh
Создайте каталог под названием Exam и войдите в этот каталог.
mkdir Exam && cd Exam
Находясь в каталоге Exam, создайте файл с именем sc1.
touch sc1
Откройте файл sc1 и напишите сценарий bash, который -«Используя цикл while, создайте четыре файла (ex1, ex2, ex3, ex4 )в каталоге /home/student/Desktop/.
См. первый пример здесь Создайте переменную с именем i
и присвойте ей значение 1, затем запустите цикл и делайте это, пока i
не ниже 5 (ниже, чем означает до 4 )-, или вы можете использовать -le 4
для более низкого или равно 4. Добавьте 1 к последнему значению i перед следующей итерацией.
i="1"
while [ $i -lt 5 ]
do
touch "ex$i"
i=$[$i+1]
done
Скопируйте эти файлы в каталог /home/student/Exam/.
cp ex* /home/student/Exam/
Проверьте/подтвердите, есть ли у нас права на запуск файла ex1.
Проверка путем настройкиls -l /home/student/Exam/ex1
Исправить, запустивchmod 700 /home/student/Exam/ex1
Переименуйте файл ex2 и назовите его log.
mv /home/student/Exam/ex2 /home/student/Exam/log
i=1
while (( i <= 4 ))
do
echo "ex$(( i++ ))"
done
Это самый "хороший" цикл while, который я могу сделать. Цикл for может принимать все три выражения:
for (( i = 1; i <= 4; i++ ))
do
echo "ex$i"
done
Или вот так, полностью избегая ((двойных скобок )).
for i in 1 2 3 4
do
echo "ex$i"
done
Это а в -между решением :легче сказать "1,2,3,4", чем "от 1 до 4".
Но touch "ex1"; touch "ex2"; touch "ex3"...
не очень хорошая идея в целом -и, в частности, если вам говорят использовать цикл. Быть ленивым важно, но программист также должен быть слишком горд, чтобы копировать и вставлять (более одного раза ).
for i in 1 2 3 4
do
touch "/home/student/Desktop/ex$i"
done
Это должен быть полный цикл. Если вам когда-нибудь понадобится больше или другие числа (или буквы/строки ), вы можете легко их изменить.
И так как мы все равно оставили цикл while, позвольте мне добавить кратчайший вид «цикла», раскрытие фигурных скобок:
touch /home/student/Desktop/ex{1,2,3,4}
или
dir=/home/student/Desktop
touch $dir/ex{1..4}
Tell me master can you answer a question:
Is it the fingers or the brain that you're teaching a lesson?
(White Stripes)