您的位置:

Linux运维常用的Shell参数及实例

一、基本参数

1、-f参数:指定Shell脚本文件名

#!/bin/bash
echo "Hello World"

执行:./test.sh

输出:Hello World

2、-n参数:不执行脚本内容,用于检查语法错误

#!/bin/bash -n
echo "Hello World"

执行:./test.sh

输出:无,因为脚本没有实际执行。

3、-x参数:打印执行的每一条命令及结果

#!/bin/bash -x
ls
pwd

执行:./test.sh

输出:

ls

file1 file2

pwd

/home/user/test

二、标准输入输出参数

1、重定向标准输出到文件

#!/bin/bash
echo "Hello World" > output.txt

执行:./test.sh

输出:output.txt文件中包含字符串"Hello World"

2、从文件中读取输入

#!/bin/bash
read name
echo "Hello $name"

执行:./test.sh \< input.txt

输入:John

输出:Hello John

3、将命令的标准输出重定向到标准错误输出

#!/bin/bash
ls /fake/dir 2>&1 >&2

执行:./test.sh

输出:ls: cannot access '/fake/dir': No such file or directory

三、参数替换

1、${var}替换成变量var的值

#!/bin/bash
var="World"
echo "Hello ${var}"

执行:./test.sh

输出:Hello World

2、${var:-default}如果var未定义,则使用默认值default

#!/bin/bash
echo "Hello ${var:-World}"

执行:./test.sh

输出:Hello World

3、${var:=default}如果var未定义,则设置为默认值default

#!/bin/bash
echo "Hello ${var:=World}"
echo "var is now set to $var"

执行:./test.sh

输出:

Hello World

var is now set to World

4、${var:+othervalue}如果变量var被设置,则使用othervalue

#!/bin/bash
var="Hello"
echo "${var:+World}"
echo "${var:+Everyone}"

执行:./test.sh

输出:

World

Everyone

四、通配符

1、*匹配任意长度的任何内容

#!/bin/bash
for file in *
do
    echo "$file"
done

执行:./test.sh

输出:当前目录下的所有文件和目录名称

2、?匹配一个字符

#!/bin/bash
ls ????

执行:./test.sh

输出:列出4个字符长的文件名

3、[]匹配中括号中任意一个字符

#!/bin/bash
ls [abc]*

执行:./test.sh

输出:列出以a、b、c开头的文件名

五、管道

1、将ls命令的输出通过管道符号发送给grep命令,用于搜索:

#!/bin/bash
ls | grep "file"

执行:./test.sh

输出:列出所有文件名中包含"file"的文件

2、将ping命令的输出通过管道符号发送给awk命令,用于处理:

#!/bin/bash
ping -c 3 www.google.com | awk '/^rtt/ { print $4 }'

执行:./test.sh

输出:ping的三次响应时间

六、条件语句

1、if语句

#!/bin/bash
if [ -f file.txt ]
then
    echo "file.txt exists"
else
    echo "file.txt does not exist"
fi

执行:./test.sh

输出:如果当前目录下存在file.txt文件,则输出"file.txt exists",否则输出"file.txt does not exist"

2、case语句

#!/bin/bash
echo "Enter a number between 1 and 3: "
read num
case $num in
    1)
        echo "You entered 1"
        ;;
    2)
        echo "You entered 2"
        ;;
    3)
        echo "You entered 3"
        ;;
    *)
        echo "Invalid input"
        ;;
esac

执行:./test.sh

输入:2

输出:You entered 2

七、循环语句

1、for循环

#!/bin/bash
for i in {1..5}
do
    echo "Count: $i"
done

执行:./test.sh

输出:

Count: 1

Count: 2

Count: 3

Count: 4

Count: 5

2、while循环

#!/bin/bash
i=5
while [ $i -gt 0 ]
do
    echo "Count: $i"
    i=$((i - 1))
done

执行:./test.sh

输出:

Count: 5

Count: 4

Count: 3

Count: 2

Count: 1

3、until循环

#!/bin/bash
i=1
until [ $i -gt 5 ]
do
    echo "Count: $i"
    i=$((i + 1))
done

执行:./test.sh

输出:

Count: 1

Count: 2

Count: 3

Count: 4

Count: 5

八、函数

1、定义函数

#!/bin/bash
function print_input {
    echo "You entered: $1"
}
print_input "Hello World"

执行:./test.sh

输出:You entered: Hello World

2、函数返回值

#!/bin/bash
function calc_sum {
    total=$(( $1 + $2 ))
    echo $total
}
result=$(calc_sum 10 20)
echo "The result is: $result"

执行:./test.sh

输出:The result is: 30

以上是Linux运维常用的Shell参数及实例的介绍,可以在日常的运维工作中大显身手!