shell入门

变量定义、输出


foo=bar

echo $foo

echo ${foo}

echo ${foo}barbarbar

使用$()执行命令


# echo $(command)

echo $(pwd)

foo=$(pwd)

echo $foo

使用特殊变量


echo $?      # 输出问题



$0        # 文件名

$1 to $9  # 脚本参数

$#        # 参数个数

$?        # 方法返回值,0代表正常

$@        # 所有的参数

$HOME     # 用户目录

$$        # 进程ID(PID)

!!        # 最后一个命令,包含参数

$_        # 最后一个命令的最后一个参数

$PATH     # 环境变量



字符串


# 单引号和双引号的区别

echo "value of foo is $foo"

echo 'value of foo is $foo'



# 连接

str1=1

str2=2

str3=$str1$str2

echo str3        # 12



# 长度

${#string}



# substring

${string:begin:end}

printf


# 和 C 语言的printf不同点

- 无()

- 使用空格分割参数



printf "%s %s\n" 1 2 3 4

条件语句


if [condition]; then

    ...

elif [condition]; then

	...

else

	... 

fi



# conditions

-eq     ==

-ne     !=

-gt     >

-lt     <

-ge     >=

-le     <=



# other 

=          == for string

!=         != for sring

-z         字符串是否为空

-f/-d      是否是文件/是否是目录

-r/-w/-x   检查权限

-e         文件/目录 是否存在

循环


# while

while [ condition ]; do

	...

done



# break continue可以用



# 示例1

for i in 1 2 3 4 5; do

	echo $i

done



# 示例2

for i in {1..5}; do

	echo $i

done



# 示例3

for (( i = 1; i <= 5; i++ )); done

	echo $i

done

枚举


# {}枚举

{,2,10}枚举 '', '2', '10'

{a..c}枚举 a b c



echo {1..100}

shell 例子


echo "String program at $(date)"echo "Running program $0 with $# arguments with pid $$"for file in "$@"; do    grep foobar "$file" > /dev/null 2> /dev/null    if [ $? -ne 0 ]; then        echo "File $file does not hava any foobar, adding one"        echo "# forbar" >> "$file"    fi  done

2> /dev/null 含义

执行shell脚本


# 方法一bash script.sh# 方法二chomd +x script.sh   # 获得运行权限(如果没有运行权限的话)#!/bin/bash          # 脚本开头必须有./script.sh# 方法三source script.sh   # . script.sh相同功能my_func            # 直接执行函数名

shell脚本检查


shellcheck script.sh

简单shell脚本


################################vim my_func.shmkcd() {	mkdir -p "$1"	cd "$1"}source my_func.shmkcd test################################for foo in hello worlddo	echo $foodone##################可以控制键盘灯的有趣功能######################cd /sys/class/leds/input1::capslocksudo echo 1 > brightness         # 失败   sudo 1 | sudo tee brightness     # 成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值