博客
关于我
【CO004】操作系统实践笔记3 —— Shell Script 语法速记
阅读量:616 次
发布时间:2019-03-12

本文共 4419 字,大约阅读时间需要 14 分钟。

笔者:YY同学


PS:尽量不要使用空格,除非语法规定必须使用!!

1. Comment

# Single line comment: '  Multi-line comment This is the first comment  This is the second comment  This is the third comment  '

2. Print

echo "Hello World!"

3. Variable

# global variable definitionmynum=1315  # numbermystr="hello world"  # string# local variable definitionlocal mystr="abc"mystr+=123  # Final restul is "abc123"

4. Retrieve Variable

# use $variable_name, {} is used to show more clear boundarymynum=123code="abc"mystr=${code} # grow mystr from abc to “abc123" echo "Before: ${mystr}"mystr+=${mynum}echo "After: ${mystr}"

5. Array

# define an arraymyarray=()myarray=("three" 1 "five" 0)# set valuemyarray[2]="eight"myarray[5]="!"# print different resultecho "${myarray[0]}"  # show the first itemecho "${myarray[@]}"  # get the whole array, most used in for loopecho "${#myarray[@]}"  # get the amount of itemsecho "${!myarray[@]}"  # get the index of items

6. String

#!/bin/bash  mylongstr="this is a long string"  # initialization echo "My string: ${mylongstr}"  # print stringecho "" echo "Number of characters in string: ${#mylongstr}"  # print length of stringecho "" echo "Splitting my string like an array:"  # split string by space and printfor word in ${mylongstr[@]}; do    echo "${word}"doneecho ""

7. Arithmetic

#!/bin/bash  a=2b=3 mysum=$((a+b))  # arithmetic operation must use double parenthesis!!echo "Sum of a=${a} and b=${b} is ${mysum}"

8. Conditional Statement

#!/bin/bash A=1 if [ $((A)) -eq 0 ]; then    echo "A equals to 0"elif [ $((A)) -gt 0 ]; then    echo "A is greater than 0"else    echo "A is smaller than 0"fi
#!/bin/bash  mystr="This is an OS course" if [ -z "${mystr}" ]; then    echo "Ops... the string is empty."else    echo "The string is not empty."fi
#!/bin/bash  if [ -f example.txt ]; then    echo "File example.txt exists."else    echo "Ops... example.txt does not exist."fi
Operator Description
-eq Returns true if two numbers are equivalent
-ne Returns true if two numbers are not equivalent
-lt Returns true if a number is less than another number
-gt Returns true if a number is greater than another number
-le Returns true if a number is less than or equal another number
-ge Returns true if a number is greater than or equal another number
== Returns true if two strings are equivalent
!= Returns true if two strings are not equivalent
! Returns true if the expression is false
-z Check if a string is empty
-d Check the existence of a directory
-f Check if a file exists and is regular
-e Check the existence of a file
-r Check the existence of a file and read permission
-w Check the existence of a file and write permission
-x Check the existence of a file and execute permission

9. Loop

#!/bin/bash  A=("a" "b" "c") # print 1 to 10for i in {   1..10}; do    echo "${i}"done # print a to cfor char in ${A[@]}; do    echo "${char}"done
#!/bin/bash  A=0 # prints 0 to 9, with each number on a new line.while [ $((A)) -lt 10 ]; do    echo $((A))    (( A++ ))done

10. IO Argument

#!/bin/bash  echo "You called $0, with" if [ $# -eq 0 ]; then    echo "no arguments..."    exit 0fi counter=0for i in "$@"; do    (( counter++ ))    echo "Arg[${counter}]: ${i}"done
  1. The input arguments are obtainable from $@
  2. The number of arguments is obtainable from $#
  3. To specify the n-th argument, use $n, e.g. first argument is $1 while $0 is a special argument that stores the name of the script

11. Shell Command

#!/bin/bash  # capture shell command. output=$(ls)echo ""echo "Output of ls: ${output}"  # execute the command # where is the exit status? echo ""haha; echo "haha gives $?"; echo ""echo "hello_world"; echo "echo gives $?"
  1. Note that the syntax $(command) means executing command (which is different from $((expression)) for evaluating arithmetic expressions)
  2. The exit status of the last executed command is always stored in $?

12. Function

#!/bin/bash  # need a space between function name and '{' !function addition {         result=$(($1 + $2))} function main {       local a=1    local b=2    result=    addition ${a} ${b}    echo "${a}+${b}=${result}"} main  # need a start point

13. String Process

#!/bin/bash  mystr="name.email.phone.remarks" # use Internal Field SeparatorIFS='.'for word in ${mystr[@]}; do    echo $worddone# print: name email phone remarks# restore  IFS IFS=" "$'\n'$'\t'
#!/bin/bash  # use awk librarywhile read line; do    echo "${line}" | awk -F',' '{print $1" "$3}'done < data.csv

随时更新~

转载地址:http://nxwaz.baihongyu.com/

你可能感兴趣的文章
MySQL 错误
查看>>
mysql 随机数 rand使用
查看>>
MySQL 面试题汇总
查看>>
MySQL 面试,必须掌握的 8 大核心点
查看>>
MySQL 高可用性之keepalived+mysql双主
查看>>
MySQL 高性能优化规范建议
查看>>
mysql 默认事务隔离级别下锁分析
查看>>
Mysql--逻辑架构
查看>>
MySql-2019-4-21-复习
查看>>
mysql-5.6.17-win32免安装版配置
查看>>
mysql-5.7.18安装
查看>>
MySQL-Buffer的应用
查看>>
mysql-cluster 安装篇(1)---简介
查看>>
mysql-connector-java.jar乱码,最新版mysql-connector-java-8.0.15.jar,如何愉快的进行JDBC操作...
查看>>
mysql-connector-java各种版本下载地址
查看>>
mysql-EXPLAIN
查看>>
MySQL-Explain的详解
查看>>
mysql-group_concat
查看>>
MySQL-redo日志
查看>>
MySQL-【1】配置
查看>>