shell 备忘录

变量

shell中的变量不区分类型,都是字符串,无论有没有加引号,如果值不包含空格,就可以不用引号。

定义变量

定义变量的方式如下(切记:等号两边不能有空格!)

a=hello
a='hello'
a="hello"

有、无引号的区别

# 变量值中没有空格时没区别
b=world
b='world'

# 变量值中有空格时,必须有引号
c=hello world      # error
c="hello world"

使用变量

想引用一个定义过的变量,变量名前面需要加 $ 符号,变量名也可以用 {} 括起来

echo $a
echo ${a}

也可以在其他字符串中包含定义过的变量(反正都是字符串)

echo "$a, world!"

有时为了界定变量名的边界,必须加上 {} 。(给变量加上 {} 是个好习惯)

echo "${a}bcd"

需要注意的是,使用一个没有定义的变量,只是没有输出,并不会报错

echo ${d}

单、双引号的区别

单引号中的内容会保持字面值,双引号会解析其中的变量和命令

echo '${a}'  # 输出 ${a}
echo "${a}"  # 输出 hello

用变量保存命令执行的结果

有两种方式

echo $(command)  # 容易辨识,且可嵌套,但是只能在bash中使用
echo `command`   # 不好辨识,无法嵌套,但多种shell都支持

双引号的重要用处

当变量值或命令返回的内容中有多个空格、tab、换行时,直接使用的话会被替换成一个空格

d="f    j"
echo ${d}         # f j
echo $(ll -a)     # 换行被替换成了一个空格

要避免这种情况,就要在使用时放进双引号里

echo "${d}"
echo "$(ll -a)"

删除变量

unset z

特殊变量

系统变量

$SHELL
$HOME
$PS1
$PS2

位置参数

$0 $1 ${2} ${10}     # 脚本名和传递给脚本或函数的位置参数,10及以上必须带 {}
$#                   # 传递给脚本或函数的位置参数的个数
$* #@                # 传递给脚本或函数的所有位置参数
$?                   # 上一命令的退出状态,或,函数的返回值
$$                   # 当前shell进程id

注意,$*$@ 在双引号中有区别

for param in "$*"; do
    echo "${param}"          # 输出一次
done
for param in "$@"; do
    echo "${param}"          # 输出多次
done

字符串

shell的变量都是字符串,字符串有很多属性和操作

长度

${#a}                # 获取长度,必须加 {}

拼接

shell中字符串拼接只需写在一起即可

echo ${a}${b}        # 写在一起即可
echo ${a}"---"${b}
echo "${a}${b}"      # 这样也可以

内建命令

echo

alias

exit

数学、比较、逻辑运算

(())

(())中做数学逻辑运算,用 $ 获取结果,(())中使用变量时,$ 加不加都行

echo $((1+2))        # 3
echo $((1>0))        # 1
c=$((${a}+${b}))
c=$((a+b))

流程控制

条件判断

if elif else

if cond; then
    balabala
elif cond; then
    balabala
else
    balabala
fi

case in

循环

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值