<>Linux shell Summary of script exercises

*
Write script file example1.sh, Store in /home/cauc/scripts Under the directory . The script function is : Find out if a file exists ( In parameter form ), If present , Set its permission as user readable and modifiable , Others have no authority . Otherwise, the information without this file is returned .
#!/bin/bash if [ -e $1 ] then chmod 600 $1 else echo "The file $1 does not
exist" fi
* Write script file leapyear.sh, Store in /home/cauc/scripts Under the directory . The script function is : Judge whether a given year is a leap year . #!/bin/bash
echo "Input a year number:" read year let "leap=$year%4==0&&$year%100!=0||$year
%400==0" if [ $leap -eq 0 ] then echo "$year is not a leap year" else echo "
$year is a leap year" fi
* Prints the of a given number of lines * number . First line print 1 individual , Second line print 2 individual , wait . The number of lines is entered by the user on the command line . #!/bin/bash for((i=0;i<$1;i++))
do for((j=0;j<=i;j++)) do echo -n "*" done echo "" done
* Write script file sum.sh, Store in /home/cauc/scripts Under the directory . The script function is : Calculate from 1 Add 100 And returns the result . #!/bin/bash s=
0 for((i=0;i<=100;i++)) do s=$(($s+$i)); done echo "the sum is:$s"
* to write shell script , Parameter is greater than 20 Positive integer of . First check whether the parameters meet the requirements . If not
Meet the requirements , Please give a hint ; If it meets the requirements , Output the square of this parameter . #!/bin/bash if [ $1 -gt 20 ] then echo "$(($1*$1
))" else echo "number is wrong" fi
* to write shell script , The date of the day is displayed first , Then find out whether the given user is working in the system (who command ). If in the system , Just output a welcome statement ( for example hello,
****!); If not in the system , Just output a statement (waiting for ***!) #!/bin/bash date if who|grep "^$1" then
echo "hello,$1!" else echo "waiting for $1!" fi
* to write shell script , The script accepts a parameter . If the given parameter is not a directory , Then a prompt message will be given ;
Otherwise use ll The command lists the contents of the directory , And output how many subdirectories there are (d start ), How many ordinary files (- start ). #!/bin/bash if [ -d $1 ]
then ls -l $1 echo -n "d:" ls -l $1|grep "^d"|wc -l echo -n "-:" ls -l $1|grep
"^-"|wc -l else echo "$1 does not existence" fi
* to write shell script , The content specified by the first parameter copy To the location specified by the second parameter .
If the first parameter is directory , Auto add -r option ( That is, all the contents in the directory are deleted copy past times );
If the first parameter is an ordinary file , Then copy To the designated place ;
If the file or directory specified by the first parameter does not exist , An error is reported ;
If the file or directory specified by the second parameter already exists , Prompt whether to replace , If selected yes, Delete the original file or directory first , Then execute copy operation , Otherwise give up .
#!/bin/bash if [ -e $1 ] then if [ -e $2 ] then echo "replace?[yes/no]" read ans
if [ $ans=="yes" ] then if [ -d $1 ] then cp -r $1 $2 else cp $1 $2 fi fi else
if [ -d $1 ] then cp -r $1 $2 else cp $1 $2 fi fi else echo "error!" fi
* to write shell script . Check whether the first parameter on the command line is -b perhaps -s. If it is -b, Calculated by
In the file specified by the second parameter b Number of lines at the beginning . If it is -s, Is calculated in the file specified by the second parameter
with s Number of lines at the beginning . Otherwise, the information with wrong selection will be displayed . #!/bin/bash case $1 in -b) count = `grep ^b $2 | wc -l
` echo “The number of lines in $2 that start with b is $count.”;; -s) count = `
grep ^s $2 | wc -l` echo “The number of lines in $2 that start with s is $count
.”;; *) echo “Theoption is not recognized”;; esac
* to write shell script . The script needs to enter the names of two files , Then the user selects the corresponding operation ( if
Either of the two parameters is not an ordinary file , An error is reported ):
cat: Output the contents of two files ;
statistic: Count the number of lines in two files
merge: Will be the first 1 Merge the contents of the first file into the second 2 After a file ;
copy: Will be the first 1 Contents of files copy To the first 2 Files ( The first 2 Original contents of files are overwritten );
bye: sign out . #!/bin/bash if [[ -f $1 && -f $2 ]] then echo “please chose your cat,
statistic, merge, copy, or bye.”read chose case $chose in cat) cat $1 $2;;
statistic) echo `wc -l $1` echo `wc -l $2`;; merge) cat $1 >> $2;; copy) cat $1
> $2;; bye) break;; esac else echo "$1 or $2 is not file" fi
* to write shell script , utilize for Loop to the current directory .c Move the file to the specified directory , complete
Display the contents of the file under the specified directory , And sort the documents from small to large . (ll -r -S) #!/bin/bash for i in `ls|grep -E "*.c"`
do mv $i $1 done ls -l -r -S $1
* to write shell script , display Fibonacci Front of sequence 10 Item and its sum . #!/bin/bash a=1 b=1 sum=2 cnt=4 echo
-n -e"$a\t$b" while [ $cnt -gt 0 ] do let "a=a+b" let "b=a+b" let "sum=sum+a+b"
let "cnt=cnt-1" echo -n -e "\t$a\t$b" done echo "" echo "sum=$sum"
* to write shell script , Judge whether the given parameter is prime .( Assume greater than 2) #!/bin/bash flag=0 if for (( i=2; i<=$1/2;i
++ )) do if (($1%i==0)) then flag=1 break fi done if [ flag -eq 1 ] then echo $1
is not a prime numberelse echo $1 is a prime number fi
14) to write shell script , Converts a given parameter to a binary representation .
#!/bin/bash a=0 b=$1 c=1 sum=0 while [ $b -gt 0 ] do let "a=b%2" let "b=b/2"
let "sum=sum+a*c" let "c=c*10" done echo "$sum"
* Suppose a folder exists ( As a parameter ), Including one studentlist.csv Documents , When
The student numbers of several students are stored in the , Each line . for example :
150341101
150341102
150341105
150341106
to write shell script , see /homework Did the student submit the homework under the folder , Assume that the format of the job name is : Student number _homework.txt. Finally, output the list of student numbers that have not submitted their homework .
#!/bin/bash cd $1 for i in `cat studentlist.csv` do str="_homework.txt" file=$i
$str if [ -f $file ] then echo "$i yes" else echo "$i no" fi done
If you have different opinions, please leave a message for discussion !

Technology